簡體   English   中英

無法連接到遠程 SQL 服務器

[英]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. 網絡問題,
  2. SQL Server 配置問題。
  3. 防火牆問題
  4. 客戶端驅動問題
  5. 應用程序配置問題。
  6. 身份驗證和登錄問題。

第 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 身份驗證 - 如果他們允許的話,它會更直接。

我遇到了同樣的問題,其他機器可以連接到 sql server 但一台計算機無法連接並顯示錯誤“網絡相關或特定於實例的錯誤...”,當我在登錄窗口中更改網絡協議時問題解決了SSMS,在從 TCP/IP 到命名管道的高級選項中。 請看下面的截圖。

連接到 SSMS 的服務器對話框 - 單擊選項

在連接屬性選項卡上的網絡協議對話框中選擇命名管道

請注意,您應該在同一個域中,並且您的憑據在服務器上應該是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM