在與SQL Server建立連接時出現於網絡相關的或特定於實例的錯誤


  客戶遇到一個問題,用“服務器名\實例名”遠程連接另外一台命名實例的時候連接失敗,報“在與SQL Server建立連接時出現於網絡相關的或特定於實例的錯誤,未找到或無法訪問服務器。請驗證實例名稱是否正確並且SQL Server已配置允許遠程訪問連接。(provider:SQL Network Interfaces,error:26-定位指定的服務器/實例時出錯)”。

  1. 首先,嘗試用ip和端口號進行連接,發現可以連接上,說明實例運行正常,並不是因為實例未開啟導致無法連接,如果此連接失敗,則需要檢查實例是否開始並且是否開啟了允許遠程連接;
  2. 再嘗試用“服務器名,端口號”進行連接,依舊可以連接,則可以判斷不是因為服務器名解析不到ip導致連接失敗,如果用此方法連接失敗,需要在host記錄中添加對應的服務器名和ip;
  3. 那么這里可以鎖定是因為用“服務器名\實例名”連接遠程命名實例的時候無法解析到對方的端口號所導致無法連接。

  那么,在SQL Server里,我們平時使用“服務器名\實例名”連接一台數據庫實例時,具體是如何連接的。這里就必須要提一個服務:SQL Server Browser服務。客戶端要連接SQL Server,如果使用的是TCP/IP協議,就必須指定SQL Server正在偵聽的端口。SQL Server Browser啟動后,它會啟動並使用UDP 1434端口。SQL Server瀏覽器會讀取注冊表(所有HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\MSSQLServer\Super- SocketNetLib下的記錄),識別計算機上所有的SQL Server實例,並注明它們使用的端口和命名管道。當一台服務器具有兩個或多個網卡時,SQL Server Browser會為SQL Server返回其遇到的第一個已啟用的端口。

  當SQL Server客戶端請求SQL Server資源時,客戶端數據驅動程序將使用1434端口向服務器發送一條UDP消息,SQL Server Browser將會回應請求實例的TCP/IP端口或命名管道名稱。然后,客戶端數據驅動程序將使用所需實例的端口或命名管道向服務器發送請求來完成連接。當SQL

  Server Browser服務不運行時,如果您提供了正確的端口號或命名管道,仍可以連接到SQL Server。如果SQL Server的默認實例在1433端口上運行,則可以使用TCP/IP連接到此默認實例。

  在了解了SQL Server Browser運行的原理后,讓客戶將查看是否未啟用該服務,但是客戶啟用后用“服務器名\實例名”仍然無法連接,再次推斷是UDP 1434端口被禁,開啟該端口之后連接正常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM