无法连接到远程SQL服务器

时间:2012-08-20 16:39:54

标签: sql sql-server sql-server-2008

我的客户给了我一个完全合格的服务器名称[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所以可能是什么问题?

他们现在无法尝试对其进行故障排除,我只是好奇我还有什么可以试着自己解决这个问题。如果可以的话。

3 个答案:

答案 0 :(得分:17)

基本上,当您无法连接到SQL Server时,问题可能是:

  1. 网络问题,
  2. SQL Server配置问题。
  3. 防火墙问题
  4. 客户端驱动程序问题
  5. 应用程序配置问题。
  6. 身份验证和登录问题。
  7. 第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。

    您可以打开errorlog文件以查看服务器是否正在成功侦听任何协议。 errorlog文件的位置通常在: %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 Browser,请将UDP端口1434置于异常状态。 同时,您也可以将sqlservr.exe和sqlbrowser.exe置于异常中,但不建议这样做。我们不信任的计算机之间的IPSec也可以阻止某些数据包。请注意,防火墙永远不应成为本地连接的问题。

    第4步:客户端驱动程序问题

    在此阶段,您可以使用某些工具测试连接。测试需要在客户端机器上完成。

    首先尝试: 远程登录 如果启用了TCP,您应该能够telnet到SQL Server 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。

    Possilbe命令使用是: 用于Windows身份验证的osql -E -SYour_target_machine \ Your_instance 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。

    第5步:申请问题

    如果您在步骤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

    对不起这面文字,我希望这里的内容可以帮助您解决问题!

    问候。

答案 1 :(得分:1)

如果要访问该服务器,则需要该域中的域帐户或使用SQL身份验证。我建议只使用SQL身份验证 - 它更直接 - 如果他们允许的话。

答案 2 :(得分:0)

我遇到了同样的问题,其他机器可以连接到sql server,但是一台计算机没有连接并显示错误“网络相关或特定于实例的错误...”,当我更改网络协议时问题解决了SSMS 的登录窗口,在从 TCP/IP 到命名管道的高级选项中。请看下面的截图。

Connect to server dialog of SSMS - click options

Select Named pipes in network protocol dialog on connection properties tab

请注意,您应该在同一个域中,并且您的凭据应该在服务器上有效。