[英]Cannot connect to remote SQL server
我的一個客戶給了我一個完全限定的服務器名稱[servername].somedomain.net
以嘗試通過 VPN 連接到他們的 SQL Server 實例。
所以我嘗試使用他們給我的用戶名和密碼。 沒運氣。 我可以ping通但無法連接,我收到用戶名和密碼不正確的錯誤。
所以我登錄到實際的服務器,驗證我的登錄是安全的並且有權限並且它出現在那里。 Workgroup\\mylogin
看起來workgroup\\
實際上與somedomain.net\\mylogin
相同。 因為當我嘗試添加somedomain.net\\mylogin
,它會說它已經添加了,即workgroup\\mylogin
。
不知道這里還有什么要檢查的。 我在 SQL Server 中給了自己 sysadmin 角色。 我可以ping通服務器的IP。
我查看了他們如何對我進行身份驗證,並且他們將我的 SQL Server 用戶設置為使用 Windows 身份驗證。 好吧,我得到的錯誤是當我嘗試在我的管理工作室本地連接時嘗試使用 Windows 身份驗證時它不能信任跨域。 我已連接到他們的 VPN,那么可能是什么問題?
他們現在無法嘗試對其進行故障排除,我只是想知道如果可以的話,我還可以嘗試自己嘗試解決什么問題。
基本上,當您無法連接到 SQL Server 時,問題可能是:
第 1 步:網絡問題
您也許可以在沒有工作網絡的情況下建立本地連接,但這是一種特殊情況。 遠程連接需要穩定的網絡。 解決 SQL 連接問題的第一件事是確保我們依賴的網絡可用且穩定。 請運行以下命令:
ping -a(專門針對 IPv4 和 IPv6 使用 -4 和 -6) ping -a nslookup(多次鍵入您的本地和遠程機器名稱和 IP 地址)
小心查看返回的結果是否有任何不匹配。 如果您無法 ping 目標計算機,則很有可能是網絡損壞或目標計算機未運行。 不過,目標機器可能位於防火牆后面,並且防火牆阻止了 ping 發送的數據包。 默認情況下,Windows 防火牆不會阻止 ping (ECHO) 數據包。 網絡上 DNS 配置的正確性對於 SQL 連接至關重要。 錯誤的 DNS 條目可能會導致以后出現各種連接問題。 請參閱此鏈接,例如“無法生成 SSPI 上下文”錯誤消息、中毒 DNS。
第 2 步:SQL Server 配置問題
您需要確保目標 SQL Server 正在運行並且正在偵聽適當的協議。 您可以使用 SQL Server 配置管理器 (SCM) 在服務器計算機上啟用協議。 SQL Server 支持共享內存、命名管道和 TCP 協議(以及需要特殊硬件且很少使用的 VIA)。 對於遠程連接,必須啟用 NP 和/或 TCP 協議。 在 SCM 中啟用協議后,請確保重新啟動 SQL Server。
您可以打開錯誤日志文件以查看服務器是否成功偵聽任何協議。 錯誤日志文件的位置通常在: %ProgramFile%Microsoft SQL Server/MSSQLxx.xxx/MSSQL/Log 如果目標 SQL 實例是命名實例,您還需要確保 SQL Browser 正在目標機器上運行。 如果您無法訪問遠程 SQL Server,請詢問您的管理員以確保所有這些都發生。
第 3 步:防火牆問題
SQL Server 計算機(或客戶端和服務器之間的任何位置)上的防火牆可能會阻止 SQL 連接請求。 如果可以的話,隔離防火牆問題的一個簡單方法是短時間關閉防火牆。 長期解決方案是為 SQL Server 和 SQL Browser 設置例外。
對於 NP 協議,請確保文件共享在防火牆例外列表中。 文件共享和 NP 都在底層使用 SMB 協議。 對於 TCP 協議,需要將 SQL Server 偵聽的 TCP 端口設置為異常。 對於 SQL 瀏覽器,請將 UDP 端口 1434 設置為例外。 同時,您也可以將 sqlservr.exe 和 sqlbrowser.exe 放入異常中,但不建議這樣做。 我們不信任的機器之間的 IPSec 也可能阻止一些數據包。 請注意,防火牆不應成為本地連接的問題。
步驟 4:客戶端驅動程序問題
在此階段,您可以使用一些工具測試您的連接。 測試肯定需要在客戶端機器上完成。
首先嘗試:telnet 如果啟用了 TCP,您應該能夠 telnet 到 SQL 服務器的 TCP 端口。 否則,返回檢查步驟 1-3。 然后使用OSQL、SQLCMD和SQL Management Studio來測試sql連接。 如果您沒有這些工具,請從 Microsoft 下載 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 for Windows Auth osql -Uyour_user -SYour_target_machine\\Your_instance for SQL Auth
SQLCMD 也適用於此。 此外,您可以對 TCP 使用“-Stcp:Your_target_machine, Tcp_port”,對 NP 使用“-Snp:Your_target_machine\\Your_instance”,對共享內存使用“-Slpc:Your_target_machine\\Your_instance”。 您會知道它是否適用於所有協議或僅適用於某些特定協議。
在此階段,您不應再看到諸如錯誤 26 和錯誤 40 之類的一般錯誤消息。 如果您正在使用 NP 並且仍然看到錯誤 40(命名管道提供程序:無法打開與 SQL Server 的連接),請嘗試以下步驟:a) 在您的服務器計算機上打開文件共享。 b) 運行“net view \\your_target_machine”和“net use \\your_target_machine\\your_share”(您也可以嘗試從 Windows 資源管理器中映射網絡驅動器)如果您在 b) 中失敗,則很可能您有操作系統/網絡配置問題,這不是特定於 SQL Server 的。 請先在互聯網上搜索以解決此問題。
您可以嘗試使用 Windows 身份驗證和 SQL 身份驗證進行連接。 如果所有工具的測試都失敗了,很可能是步驟 1-3 設置不正確,除非失敗與登錄相關,否則您可以查看步驟 6。
如果您使用某些工具成功,但使用其他工具失敗,則可能是驅動程序問題。 您可以在我們的論壇上發布問題並向我們提供詳細信息。
您還可以使用“\\windows\\system32\\odbcad32.exe”(Windows 附帶的)通過為各種驅動程序添加新的 DSN 來測試連接,但這僅適用於 ODBC。
第五步:申請問題
如果您通過第 1-4 步成功,但仍然看到您的應用程序失敗,則可能是您的應用程序中的配置問題。 在這里考慮幾個可能的問題。 a) 您的應用程序是否與您在步驟 4 中進行測試的帳戶在同一帳戶下運行? 如果沒有,您可能希望在該帳戶下嘗試在第 4 步中進行測試,或者如果可能,更改為您的應用程序的可用服務帳戶。 b) 您的應用程序使用哪個 SQL 驅動程序? c) 你的連接字符串是什么? 連接字符串是否與您的驅動程序兼容? 請查看http://www.connectionstrings.com/以供參考。
第 6 步:身份驗證和登錄問題這可能是 sql 連接問題最困難的部分。 它通常與您的網絡、操作系統和 SQL Server 數據庫上的配置有關。 對此沒有簡單的解決方案,我們必須逐案解決。 sql_protocols 中已經有幾篇博客討論了一些特殊情況,您可以檢查它們是否有任何適用於您的情況。 除此之外,要記住的事情:a) 如果您使用 SQL 身份驗證,則必須啟用混合身份驗證。 檢查此頁面以供參考http://msdn.microsoft.com/en-us/library/ms188670.aspx b) 確保您的登錄帳戶對登錄期間使用的數據庫(OLEDB 中的“初始目錄”)具有訪問權限。 c) 檢查系統上的事件日志,看看是否有更多信息
參考: http : //blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx
對不起,這堵文字牆,我希望這里的內容可以幫助您解決問題!
問候。
如果您想訪問該服務器,您將需要來自該域的域帳戶或使用 SQL 身份驗證。 我建議只使用 SQL 身份驗證 - 如果他們允許的話,它會更直接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.