mnD*_*DBA 5 sql-server-2008-r2
在此之前我会说我完全不相信这不是供应商在他们的应用程序服务器上做错了什么。只是在寻找新的想法
实例 X 是 SQL Server 2008 R2 的命名实例。它包含大量数据库并接收来自大量应用程序服务器的连接。浏览器服务正在运行,所有连接都是通过服务器\实例名称进行的。
前几天将数据库从旧的 2K5 实例转移到它,供应商声称他无法连接到数据库。他说他只是在他的连接字符串中输入了 Server\instance 名称,但他的连接失败了。目前他不能/没有向我提供任何真正的错误信息。
每当他尝试时,我们都看不到成功或失败的证据。截至目前,没有证据表明他甚至击中了命名实例。不过,他可以测试 2008 R2 默认实例。因此,由于命名实例似乎有所不同,我认为这与端口号有关。我们没有明确地尝试过端口号,因为我们需要它只使用名称并且供应商发誓应该这样做。但是,我们可以通过 SQLCMD 和设置基本 ODBC 来连接他的凭据。
应用程序服务器是 2003R2,在我看来,它很糟糕,但更换它不是一种选择。DBNETLIB.DLL 版本为 2000.86.3959.0,本机客户端版本为 2005.90.3042。您将不得不回溯很长一段时间才能无法命中命名实例。
我错过了任何过于明显的东西吗?从客户服务的角度来看,宁愿不只是说“适用于其他所有人!”。
编辑9:44PM Central - 应该在原始帖子中注意到防火墙未在应用程序服务器上打开,我们不会过滤/阻止网络内部的任何内容。
这可能是客户端错误,而不是服务器错误。也就是说,服务器响应(正如您所注意到的)其他客户端,但不响应特定客户端。
servername\instancename
仅使用可能存在“客户端别名”。客户端别名基本上会“劫持”servername\instancename
并覆盖端口、协议、实例、服务器等。我个人不喜欢他们。
这可以通过“SQL Server 配置管理器”或控制面板 ODBC 来显式完成。检查并删除它。或者,您可以在注册表中查找并将其删除:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo
Run Code Online (Sandbox Code Playgroud)
第二个选项是指定端口。如果我使用的servername\instancename,1234
话这是有效的servername,1234
。不执行通过 SQL 浏览器Instancename
的解析。instancename
第三个选项是默认协议是命名管道而不是 tcp。如果有人搞乱了“SQL Server 配置管理器”np
,并且当您从新服务器删除或类似操作时,很可能会在服务器迁移中显示这种情况,则可能会发生这种情况。但是,您也可以在注册表中修复此问题。
还有更多奇特的选项,例如硬编码的 HOSTS 文件或错误的 DNS。但一般是SQL Server客户端配置的错误。
归档时间: |
|
查看次数: |
5330 次 |
最近记录: |