Sql-Server

如何使此 SQL Server ODBC 連接正常工作?

  • January 22, 2019

注意:我顯然已將伺服器名稱和 IP 更改為虛構的。

這是正在發生的事情。我有一台伺服器,我正在呼叫它MYSERVER,執行 Microsoft SQL Server Express 2005。就在這台伺服器本身上,我已經設置了一個指向自身的 ODBC 連接,並且已經完美執行。我使用 SQL Server 身份驗證(不是 Windows 身份驗證)登錄,它的設置如下:

良好 ODBC 連接的圖像

就像我說的那樣,那個有效。但接下來,我有另一台電腦,它位於完全不同的域/不在 Intranet 上,它需要訪問託管在 MYSERVER 上的同一個 SQL Server。因為它在不同的域上,所以它不能辨識名稱“MYSERVER”;我必須將它指向 MYSERVER 的 IP 地址,我們會說它是 123.456.789.012。但是 ODBC 連接似乎在那裡不起作用。我嘗試這樣設置:

壞 ODBC 連接的圖像

這行不通。當我輸入使用者名和密碼並按下一步時,它會停頓 10 到 20 秒,然後最終返回以下錯誤:

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

如果我嘗試相同的操作,但將“伺服器”從123.456.789.012\SQLEXPRESS普通的舊更改123.456.789.012,我會得到一個不同的錯誤:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

現在我知道你在想什麼了。你可能會想,“呃,你可能沒有打開 1433 埠的防火牆,笨蛋。” 除非我這樣做了,並且我驗證了這一點,因為我可以成功執行:

telnet 123.456.789.012 1433

…從命令行中得到所有我想要的。所以我不確定該怎麼做。我知道 SQL Server 存在、工作正常,並且可以正確設置 ODBC 連接;我只是不確定我的連接設置有什麼問題導致這些錯誤。基於我列出的後一個錯誤,它似乎可以連接到伺服器,但根本找不到實例(因為我當時沒有指定一個)。那麼這是否意味著我只需要使用一些不同的語法來指定 IP 以及實例名稱?我該怎麼辦?提前致謝。

預設情況下禁用 SQL Server 2005 的命名管道和 TCIP 協議。您是否在“SQL 伺服器配置管理器”下啟用了它們?您可以在 SQL Server 網路配置和 SQL Native 客戶端 xx 配置下找到協議。

由於“共享記憶體”協議,伺服器本身的連接可以正常工作。

您是否按照如何配置 SQL Server 2005 以允許遠端連接啟用了SQL Server Browser 服務?:

如果您使用實例名稱執行 SQL Server 2005,並且未在連接字元串中使用特定的 TCP/IP 埠號,則必須啟用 SQL Server Browser 服務以允許遠端連接。例如,安裝 SQL Server 2005 Express 時預設實例名稱為 Computer Name\SQLEXPRESS。

引用自:https://serverfault.com/questions/82007