5

我的一个客户给了我一个完全有资格[servername].somedomain.net 尝试通过 VPN 连接到他们的 SQL Server 实例的服务器名称。

所以我尝试使用他们给我的用户名和密码。没运气。我可以ping它但无法连接,我收到用户名和密码不正确的错误。

所以我登录到实际的服务器,验证我的登录是安全的并且有权限并且它出现在那里。Workgroup\mylogin并且看起来workgroup\实际上是一样的somedomain.net\mylogin。因为当我尝试添加时somedomain.net\mylogin,它诉诸于说它已经添加了workgroup\mylogin

不知道这里还有什么要检查的。我给自己在 SQL Server 中的系统管理员角色。我可以ping服务器的IP。

我查看了他们如何对我进行身份验证,并且他们让我在 SQL Server 中的用户设置为使用 Windows Auth。好吧,我得到的错误是当我尝试在我的管理工作室中本地连接时尝试使用 Windows 身份验证时它不能信任跨域。我已连接到他们的 VPN,所以可能是什么问题?

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

4

3 回答 3

21

基本上,当您无法连接到 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,请让您的管理员确保所有这些都发生。

第三步:防火墙问题

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 Explorer 映射网络驱动器)如果您在 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 中的“初始目录”)。

参考:http: //blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx

很抱歉这堵文字墙,我希望这里的一些东西可以帮助你解决你的问题!

问候。

于 2012-08-20T19:23:45.687 回答
1

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

于 2012-08-20T16:48:30.957 回答
0

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

连接到 SSMS 的服务器对话框 - 单击选项

在连接属性选项卡上的网络协议对话框中选择命名管道

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

于 2021-01-27T10:19:14.220 回答