連接到 R2 命名實例
首先我會說我完全不相信這不是供應商在他們的應用程序伺服器上做錯了什麼。只是在尋找新的想法
實例 X 是 SQL Server 2008 R2 的命名實例。它包含大量數據庫並接收來自大量應用程序伺服器的連接。瀏覽器服務正在執行,所有連接都是通過伺服器\實例名稱進行的。
前幾天將數據庫從舊的 2K5 實例移到該實例上,供應商聲稱他無法連接到數據庫。他說他只是在他的連接字元串中輸入伺服器\實例名稱,但他的連接失敗了。目前他不能/沒有向我提供任何真正的錯誤資訊。
每當他嘗試時,我們都看不到成功或失敗的證據。截至目前,沒有證據表明他甚至擊中了指定的實例。不過,他可以測試 2008 R2 預設實例。因此,由於命名實例似乎有所不同,我認為這與埠號有關。我們沒有明確地嘗試過埠號,因為我們需要它與名稱和供應商發誓它應該一起工作。但是,我們可以通過 SQLCMD 和設置基本 ODBC 來連接他的憑據。
應用程序伺服器是 2003R2,在我看來,它是廢話,但更換它不是一種選擇。DBNETLIB.DLL 版本為 2000.86.3959.0,本機客戶端版本為 2005.90.3042。您將不得不走很長一段路才能無法訪問命名實例。
我錯過了什麼過於明顯的東西嗎?從客戶服務的角度來看,寧願不只是說“為其他人工作!”。
編輯9:44PM Central - 應該在原始文章中指出防火牆不在應用程序伺服器上,我們不會過濾/阻止網路內部的任何內容。
這可能是客戶端錯誤,而不是伺服器錯誤。也就是說,伺服器響應(如您所述)其他客戶端,但不是某個客戶端。
概括
- 刪除所有客戶端別名
- 確保 tcp 是預設和頂級協議
- 確保
servername\instancename
僅使用背景
可能存在“客戶別名”。客戶端別名基本上會“劫持”
servername\instancename
並覆蓋埠、協議、實例、伺服器等。我個人不喜歡他們。這可以通過“SQL Server 配置管理器”或控制面板 ODBC 事物顯式完成。檢查並刪除它。或者,您可以在系統資料庫中四處尋找並將其刪除:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo
第二個選項是指定埠。如果我使用
servername\instancename,1234
,那麼這是有效的servername,1234
。不執行通過 SQL 瀏覽器的Instancename
解析。instancename
第三個選項是預設協議是命名管道而不是 tcp。如果有人弄亂了“SQL Server 配置管理器”
np
並且很可能在您從新伺服器中刪除或類似情況時顯示在伺服器遷移上,則可能會發生這種情況。但是,您也可以在系統資料庫中修復此問題。還有更多奇特的選項,例如硬編碼的 HOSTS 文件或錯誤的 DNS。但一般是SQL Server客戶端配置的故障。
以下是當從任何網路應用程序連接到新的 SQL Server 失敗時我經過的清單。在您的情況下,第 5點和第 6點可能適用。
- 檢查 SQL Server 是否啟用了SQL 和 Windows 身份驗證
- 檢查SQL Server Browser 服務是否已啟用並正在執行
- 檢查是否為您的 SQL Server 實例啟用了TCP/IP 連接(預設通常是禁用的)
- 檢查伺服器防火牆是否允許連接到 SQL Server 和 SQL Server Browser
- 檢查數據庫中定義的數據庫使用者是否也存在於具有相同登錄憑據的新 SQL Server 上
- 如果您將數據庫從另一台伺服器移動到新伺服器,請檢查數據庫使用者是否對您的數據庫具有相應的訪問權限
- 最後但並非最不重要的一點是,檢查您的應用程序數據庫配置是否真的符合您的預期(這可能應該首先進行)