修补程序: 当您连接到 SQL Server 的命名实例正在运行 Windows Vista 或 Windows Server 2008 的客户端计算机上错误消息:"指定的 SQL 服务器找不到"或"错误查找的服务器/实例指定"

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 944390
重要 本文将向您显示如何帮助降低安全设置或关闭计算机上的安全功能的信息。您可以通过这些更改来解决特定的问题。我们建议在进行这些更改之前,充分考虑与在您的特定环境中实施此替代方法相关联的风险。如果实施该替代方法,请采取任何适当的附加措施来帮助保护您的计算机。
症状
请考虑下面的方案。在客户端计算机正在运行 Windows Vista 或 Windows Server 2008,您连接到 Microsoft SQL Server 的命名实例。命名的实例位于远程服务器上。在此方案中,则连接可能会失败。

注意:当您连接到 SQL Server 的下列版本之一时,将发生此问题:
  • Microsoft SQL Server 2000
  • Microsoft SQL Server 2005
  • Microsoft SQL Server 2008
如果您使用 Windows 数据访问组件 (Windows DAC) 6.0 连接到命名实例时,您会收到以下错误消息:
[DBNETLIB]找不到指定的 SQL 服务器。
[DBNETLIB]ConnectionOpen (Connect())。
如果您使用 SQL 本机客户端连接到命名实例,您将收到以下错误消息:
[SQL 本机客户端]SQL 网络接口: 错误定位的服务器/实例指定 [xffffffff 的地址]。
[SQL 本机客户端]登录超时已过期。
故障转移群集实例的命名的实例时,将出现此问题。此外,如果远程服务器上有多个 IP 地址,则可能会出现此问题。
原因
当您连接到命名实例时,客户端网络库会将用户数据报协议 (UDP) 请求数据包发送到该命名实例的 IP 地址。然后,SQL Server 浏览器返回 UDP 响应数据包包含有关连接终结点的信息。

但是,在 UDP 响应数据包,源 IP 地址可能不是 UDP 请求数据包发送到 IP 地址。如果故障转移群集实例的命名的实例,则源 IP 地址是物理计算机,而不是虚拟 IP 地址的远程服务器的 IP 地址。如果远程服务器具有多个 IP 地址,源 IP 地址可能是任何分配给远程服务器的 IP 地址。

在 Windows Vista 中, Windows 防火墙不允许为松散源映射。因此, Windows 防火墙会删除 UDP 响应数据包。

关于松散源映射的详细信息,请参阅"UDP 连接"部分中的下列 Microsoft Web 站点:
解决方案

SQL Server 2008 年服务包信息

重要:您在运行 SQL Server 2008年的远程服务器上应用了 service pack。

若要解决此问题,请获取最新的 service pack,SQL Server 2008 年。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
968382如何获取SQL Server 2008 最新的 服务包


注意:在 SQL 服务器正在运行 Windows Vista 或 Windows 服务器 2008年系统上时,此修复程序只解决的问题。对于 SQL Server 安装在早期版本中,如 Windows Server 2003 中,必须使用所述的方法之一在 Wordaround 部分。
替代方法
若要变通解决此问题,请使用以下方法之一,在客户端计算机上。

方法 1

在连接字符串中指定的 TCP 端口号或命名的管道名称连接到命名实例。

有关连接字符串的语法的详细信息,请参阅"创建有效的连接字符串"部分中的下列 Microsoft Web 站点:

方法 2

警告此替代方法可能导致计算机或网络更易于受到恶意用户或恶意软件 (如病毒) 的攻击。我们不建议采用这种解决方法,但提供此信息,以便您可以自己决定实施此替代方法。使用此替代方法需要您自担风险。

具有高级安全性的 Windows 防火墙控制面板中创建的应用程序连接到 SQL Server 传出规则。若要执行此操作,请按照下列步骤操作:
  1. 在控制面板中,双击管理工具
  2. 管理工具,双击具有高级安全性的 Windows 防火墙
  3. 具有高级安全性的 Windows 防火墙中,单击出站规则,然后单击新建规则
  4. 单击程序,然后单击下一步
  5. 单击此程序路径,指定的应用程序的路径,然后单击下一步
  6. 单击允许的连接,然后单击下一步
  7. 完成新的出站规则向导中的步骤。

方法 3

警告此替代方法可能导致计算机或网络更易于受到恶意用户或恶意软件 (如病毒) 的攻击。我们不建议采用这种解决方法,但提供此信息,以便您可以自己决定实施此替代方法。使用此替代方法需要您自担风险。

具有高级安全性的 Windows 防火墙控制面板中创建一个传入的规则,用于允许从所有可能的 IP 地址的远程服务器或从所有可能的 IP 地址配置为故障转移群集实例的交通。若要执行此操作,请按照下列步骤操作:
  1. 在控制面板中,双击管理工具
  2. 管理工具,双击具有高级安全性的 Windows 防火墙
  3. 具有高级安全性的 Windows 防火墙中,单击入站规则,然后单击新规则
  4. 单击自定义、,然后单击下一步
  5. 单击所有程序,然后单击下一步
  6. 协议类型列表中,单击任何),然后单击下一步
  7. 哪些远程 IP 地址 does 此规则匹配这些 IP 地址,请单击,然后单击添加
  8. IP 地址对话框中,键入一个在此 IP 地址或子网,IP 地址,然后单击确定
  9. 若要添加其他 IP 地址,请重复步骤 7 到 8,然后单击下一步
  10. 单击允许的连接,然后单击下一步
  11. 完成新建入站规则向导中的步骤。
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。 此问题最早在 SQL Server 2008 Service Pack 1。
更多信息
有关具有高级安全性的 Windows 防火墙的详细信息,请访问下面的 Microsoft Web 站点:

警告:本文已自动翻译

属性

文章 ID:944390 - 上次审阅时间:01/11/2015 16:01:00 - 修订版本: 3.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Web

  • kbexpertiseadvanced kbtshoot kbprb kbmt KB944390 KbMtzh
反馈