各种连接问题的常见原因

穿过每个适用于您的实例下面的原因,对于每个适用的原因,尝试相应的解决方法。

原因 1: 不正确的服务器名称或服务器名称对话框中的连接字符串中指定的

  • 确保您指定的应用程序匹配您在错误日志中的有的服务器名称

  • 导航到您的应用程序的web.config文件并确保连接字符串部分点移至正确的服务器名称和正在使用正确的格式

注意

要从应用程序中以编程方式获取连接字符串,请参阅示例如何: 读取连接字符串的 Web.config 文件中

如果这不能解决问题,继续检查此部分中的其他原因。

原因 2: 客户端计算机上的别名错误

当您需要使用一个替代名称连接到 SQL Server 或网络中存在名称解析问题时在环境中通常使用别名。别名的客户端计算机上错误可能会导致您的应用程序转到错误导致故障的服务器的连接。

  • 通过键入cliconfg.exe在您的运行命令打开SQL Server 客户端网络实用程序

  • 检查是否有任何要连接到的服务器定义的别名。

  • 如果存在,请执行以下操作:

 

  1. 单击编辑,然后重命名该服务器的别名。(例如,如果您的服务器名称,MySQL 将其重命名为 MySQL_test),然后重试连接。如果连接正常,则表明有别名错误,可能从不再需要旧的配置。如果您仍遇到错误,重别名命名为其原始名称,请转到下一步。

  2. 检查连接参数的别名并确保它们是正确的。下面是一些可能会导致连接问题的常见情况:

    • 错误的 IP 地址的服务器名称参数。请确保此 IP 地址匹配的 SQL错误日志文件中的条目。

    • 不正确的服务器名称服务器中的 name 参数-例如尽管您服务器别名所指向正确的服务器名称,如果服务器名称参数值不正确,连接将失败。

    • 如果您使用命名的管道别名,确保管道名称具有正确的格式

      • 对于连接到名为 Mydefaultinstance 的默认实例,应\\Mydefaultinstance\pipe\sql\query管道名称。

      • 对于连接到命名实例 MySQL\Named,应\\MySQL\pipe\MSSQL$Named\sql\query管道名称。

如果这不能解决问题,继续检查适用于您的实例类型 (默认实例或命名的实例) 的此部分中的其他原因

原因 3 (默认实例): 客户端和服务器阻止侦听端口 SQL Server 实例之间的防火墙

默认实例: 默认实例通常运行在端口 1433年上。某些安装过程也可用于非标准端口 (不是 1433) 正在运行的 SQL 实例。防火墙可能会阻止这些。

  • 确定正在运行的 SQL 实例的端口号 如果您的 SQL server 默认实例正在使用非标准端口,请检查以下博客文章在 MSDN 上的附加信息:连接到非默认端口上的 SQL

  • 请尝试将 SQL Server 端口号附加到使用这种格式的服务器名称< 服务器名 >,端口号和看到,是否是工作。 例如,如果您的 SQL 实例名称是 MySQLDefaultinstance,它运行在端口 2000年指定服务器名称,如MySQLServer,2000年,是否它起作用,请参阅。如果它运行,它是指示防火墙将阻止该端口。

  • 如果确认,则将端口添加到防火墙的排除列表中。有关说明,请选择选项"的原因 3 或原因 5: 将端口添加到防火墙的排除列表"在页面的底部。

 

原因 4 (命名实例): SQL 浏览器没有启动 客户端应用程序连接到 SQL Server 的命名实例使用 SQL 浏览器服务在系统上运行 SQL 来枚举 SQL 正在侦听的端口的位置。如果浏览器服务未启动,则连接将失败。

  • 在系统上运行 SQL Server 实例,或者使用控制面板中的 SQL Server 配置管理器或服务小程序,如果尚未启动,则启动 SQL 浏览器服务。有关详细信息请在 MSDN 上的以下主题 如何: 启动和停止 SQL Server 浏览器服务

如果已经启动 SQL 浏览器检查 UDP 端口 1434年被按照下一段的防火墙阻止。

原因 5 (命名实例): SQL 浏览器使用的 UDP 端口 1434年被阻止在网络上

如果您的 SQL 实例的命名的实例,它可能被配置为使用动态端口或静态端口。在任一情况下,基础网络库查询 SQL 浏览器服务在您的 SQL Server 计算机上运行通过UDP端口1434年进行枚举的命名实例的端口号。如果客户端和服务器之间的防火墙阻止此 UDP 端口,客户端库不能确定 (连接的要求) 的端口和连接失败 

方法 1:

  1. 请注意下 SQL 实例上的 SQL Server 错误日志从正在侦听的端口

  2. 尝试连接到命名实例使用附加到使用格式名的服务器的端口号<servername\instancename>, 端口号,并查看是否有工作的。如果它运行,它是指示防火墙阻止端口 UDP 端口 1434年。例如,如果您的 SQL 实例名称是 MySQL\Namedinstance,它运行在端口 3000 指定服务器名称,如MySQL\Namedinstance,3000 ,是否它可以正常工作。如果它运行,它可以意味着阻止 UDP 端口 1434年,或静态端口被阻止或两者。若要确认是否 UDP 端口或使用 Portqry 下面的方法 2 中的静态端口

方法 2:

  1. 使用 PortqryUI 工具与您的命名实例,并观察所生成的输出。如果您看到的 UDP 端口 1434年进行筛选的消息则表明端口被阻止在网络上。有关如何使用该工具的说明,请选择选项"的案例 5: 与 SQL Server 使用 PortqryUI 工具"在底部。

首先确定 SQL Server 实例正在侦听动态与静态端口,并使用与您的应用场景相关的过程。如何判断 SQL 正在侦听动态与静态端口,选择选项"例 5: 在动态或静态的端口上侦听? "在底部。

  • 案例: 动态端口-> 在这种情况下,您需要确保 SQL 浏览器服务确实已启动并在客户端和服务器之间的防火墙没有阻止 UDP 端口 1434年。如果您无法做到这些,应切换您的 SQL Server 实例使用静态端口,并使用配置为侦听特定 TCP 端口 (SQL Server 配置管理器) 服务器中介绍的过程。

  • 案例: 静态端口配置和 SQL 浏览器没有运行或不能在防火墙上打开 UDP 1434-> 在这种情况下,您需要确保确保在连接字符串中指定的静态端口,端口未被防火墙阻止。有关说明,请选择选项"的案例 3 或用例 5: 防火墙的排除列表添加端口"在底部。

这是否解决了您的问题?

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×