SQL Server – 檢查SQL串連錯誤問題的步驟
來源:互聯網
上載者:User
貼一篇翻譯的FAQ(我要是能寫出這種水平就好了。。。),對於最常見的SQL串連問題,該步驟幾乎應該都能應付。FAQ:檢查SQL串連錯誤問題的步驟Q:我遇到過很多SQL串連錯誤,是否有一個解決串連問題的嚮導?A:基本上,當您不能串連您的SQL Server資料庫時,問題可能會如下:
1) 網路問題
2) SQL Server配置問題
3) 防火牆問題
4) 用戶端驅動問題
5) 應用程式配置問題
6) 認證和登陸問題步驟1:網路問題
對於遠端連線,一個穩定的網路是必要的。所以第一件要做的就是檢查SQL的串連性問題,以確認我們依賴的網路是穩定和可工作的。請運行如下命令:
ping -a <您的目標機> (對於IPv4和IPv6分別使用 -4 and -6)
ping -a <您的遠程IP地址>
nslookup(請多次輸入您的本地和遠程機器名和IP地址)如果您不能ping通您的目標機,很可能是因為網路故障或目標機器沒有運行。很可能網路故障或目標機器沒有在運行。但也可能是因為目標機在防火牆之後而防火牆阻止了ping包。網路中DNS的正確設定對於SQL串連也是非常重要的。錯誤的DNS登記也可能導致之後各種各樣的串連問題。步驟2:SQL Server配置問題
您需要確認目標SQL Server正在運行,而且在合適的協議中監聽。您可以使用SQL Server Configuration Manager (SCM)來允許伺服器端的協議。對於遠端連線,NP和/或TCP protocols必須被允許。在您在SCM中允許了協議後,請確認重新啟動SQL Server服務。您可以開啟錯誤記錄檔檔案來查看服務其是否監聽在合適的連接埠。錯誤記錄檔的位置預設位於%ProgramFile%Microsoft SQL Server/MSSQLxx.xxx/MSSQL/Log步驟3:防火牆問題對於NP協議,請確認檔案分享權限設定在防火牆的例外列表中。檔案分享權限設定和NP都使用SMB協議。
對於TCP協議您需要將SQL Server監聽的TCP連接埠置於例外列表中。
對於SQL Browser,請將UDP 1434連接埠置於例外列表中。
同時,您可以將sqlservr.exe和sqlbrowser.exe也放到例外列表中。但我們不信任的機器間的IPSEC可能會導致某些包被阻止。請注意防火牆不會成為本地串連的問題原因(本地串連不經過防火牆)。步驟4:用戶端驅動問題
在這個階段,您可以使用某些來測試您的串連。作為確認,測試需要在用戶端機器上進行。請首先嘗試:
telnet <您的目標機> <TCP連接埠>
您應該能夠telnet到目標機器SQL Server的TCP連接埠如果TCP被設定為允許的話。如果不行的話請返回到前三個步驟再次檢查。然後使用OSQL,SQLCMD和SQL Management Studio來測試SQL串連。如果您沒有這些工具,請從微軟官方網站下載SQL Express免費獲得這些工具。OSQL(SQL Server 2000附帶)使用MDAC。
OSQL(SQL Server 2005和2008附帶)使用SNAC ODBC。
SQLCMD(SQL Server 2005和2008附帶)使用SNAC OLEDB。
SQL Management Studio(SQL Server 2005和2008附帶)使用SQLClient。命令大致如下:
osql -E -SYour_target_machine\Your_instance (對於Windows驗證)
osql -Uyour_user -SYour_target_machine\Your_instance (對於SQL驗證)SQLCMD也可以這樣應用。此外您也可以對TCP使用“-Stcp:Your_target_machine, Tcp_port”,對NP使用“-Snp:Your_target_machine\Your_instance”,對Shared Memory使用“-Slpc:Your_target_machine\Your_instance”。您需要知道只對某些協議失敗還是對於所有協議都失敗。在這個階段,您應該不再會看到通常的錯誤資訊諸如ERROR 26和ERROR 40了。如果您使用NP而且您依然看見error 40 (Named Pipes Provider: Could not open a connection to SQL Server),請嘗試如下步驟:
a) 在您的伺服器上開啟一個檔案分享權限設定
b) 運行“net view \\your_target_machine”和“net use \\your_target_machine\your_share”(您也可以嘗試在Windows Explorer中映射網路磁碟機)
如果您在第二個步驟得到錯誤,那麼很可能您存在作業系統/網路故障,而非SQL Server特有的錯誤。很可能您在前三個步驟中沒有很好地設定,不然就可能是登入相關問題,這樣您可以直接跳到第六個步驟。如果使用部分工具您能成功串連,但使用另外一些工具失敗,那麼很可能是驅動問題。您也可以使用“\windows\system32\odbcad32.exe”(內嵌於Windows)對於不同的驅動通過增加新的DSN來測試連接,不過這僅對於ODBC有效。步驟5:應用程式問題
如果您在前四個步驟成功但依然在您的應用程式中看到錯誤,那麼很可能這是由您應用程式中的串連問題導致。請考慮如下的可能的問題:
a) 您的應用程式是否使用與第四個步驟相同的帳號進行串連?如果不是的話,您可能需要換一個可工作的服務帳號來進行第四步驟的測試。
b) 您的應用程式使用的是何種SQL驅動?
c) 您的連接字串是什嗎?該連接字串是否與您的驅動相容?更多請參考http://www.connectionstrings.com/步驟6:認證和登入問題
這可能是SQL串連問題中最複雜的部分了。這可能與您的網路,作業系統和SQL Server資料庫都有關係。對於該問題沒有一個簡單的解決方案,需要具體問題具體分析。請牢記:
a) 如果您使用了SQL驗證,必須先允許混合驗證。請檢查http://msdn.microsoft.com/en-us/library/ms188670.aspx獲得更多內容
b) 請確認您的登入帳號對於您使用的資料庫有足夠的存取權限
c) 請檢查錯誤記錄檔已獲得更多詳細資料如果對於以上步驟您有任何問題歡迎發在新聞群組中
對於錯誤修正,對於我們最重要的是a) 準確的錯誤資訊 b) 連接字串其他相關資源
http://support.microsoft.com/kb/888228
http://blogs.msdn.com/sql_protocols/archive/2005/12/19/505372.aspx