无法连接到远程SQL服务器

Pos*_*Guy 5 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 Auth.好吧,我得到的错误是,当我尝试在我的管理工作室本地连接时尝试使用Windows身份验证时,它无法信任跨域.我连接他们的VPN所以可能是什么问题?

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

小智 19

基本上,当您无法连接到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.

您可以打开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步:客户端驱动程序问题

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

首先尝试: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.

Possilbe命令使用:osql -E -SYour_target_machine\Your_instance for Windows Auth osql -Uyour_user -SYour_target_machine\Your_instance for SQL Auth

SQLCMD也适用于此处.此外,还可以使用"-Stcp:Your_target_machine,TCP_PORT"为TCP,"-Snp:Your_target_machine\Your_instance"为NP和"-Slpc:Your_target_machine\Your_instance"共享内存.你会知道它是否适用于所有协议或只是某些特定的协议.

在此阶段,您不应再看到错误26和错误40等常规错误消息.如果您使用的是NP,但仍然看到错误40(命名管道提供程序:无法打开与SQL Server的连接),请尝试以下步骤:a)在服务器计算机上打开文件共享.b)运行"NET VIEW\your_target_machine"和"净使用\ your_target_machine\your_share"(您可以从Windows资源管理器试图映射网络驱动器一样)如果你在B获得故障),它很可能是你有OS /网络配置问题,这不是特定于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

对不起,这个文本墙,我希望从这里可以帮助您解决问题!

问候.


Mik*_*oud 1

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