繁体   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