如何使此 SQL Server ODBC 連接正常工作?
注意:我顯然已將伺服器名稱和 IP 更改為虛構的。
這是正在發生的事情。我有一台伺服器,我正在呼叫它
MYSERVER
,執行 Microsoft SQL Server Express 2005。就在這台伺服器本身上,我已經設置了一個指向自身的 ODBC 連接,並且已經完美執行。我使用 SQL Server 身份驗證(不是 Windows 身份驗證)登錄,它的設置如下:就像我說的那樣,那個有效。但接下來,我有另一台電腦,它位於完全不同的域/不在 Intranet 上,它需要訪問託管在 MYSERVER 上的同一個 SQL Server。因為它在不同的域上,所以它不能辨識名稱“MYSERVER”;我必須將它指向 MYSERVER 的 IP 地址,我們會說它是 123.456.789.012。但是 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。