连接字符串中的名称解析从网络共享失败

时间:2013-04-03 18:43:59

标签: sql-server-2008 windows-7 .net-4.0

我需要与网络基础设施人员坐在一起,看看为什么突然发生如下的SQL连接错误。

作为准备工作,请提供输入可能出现此错误的原因,以及我们可以在应用程序和/或基础架构方面试图绕过它。

  • 从网络共享启动应用程序时发生错误。
  • 在本地复制文件并在本地启动时不会发生错误。
  • 错误始终可重现。
  • 几个星期前(在我去度假之前)这个运行正常,所以我不确定它什么时候自我介绍。

现在的复杂性:

  • 用户在DomainA
  • 工作站位于DomainB
  • 数据库服务器位于DomainB
  • 数据库登录使用用户/密码(尚无可信连接)
  • 登录域是DomainA
  • 网络共享位于DomainA中,但作为DFS的一部分
  • DomainA和DomainB之间的双向信任
  • 客户端应用程序是x86 Windows 7 Enterprise上的.NET 4(完整框架)
  • 服务器是x64 Windows Server 2008 R2上的SQL Server 2008 R2 Enterprise

ConnectionString是这样的:

Server=severname.DomainB\InstanceName,48000;Database=DBName;...

尝试了如下所示的基于IP的ConnectionString,这样可行,所以这是一个名称解析的事情:

Data Source=IPAddress\InstanceName,48000;Database=DBName;...

由于IP地址可能会发生变化,我们希望保留名称(但IP地址可以使用一段时间)。
我们应该怎样做才能进一步研究名称解析的事情?

换句话说:

  

为什么从网络共享启动时名称解析会有所不同   而不是从当地的车道?为什么过去没有什么不同?

环境非常紧张(典型的企业环境),因此简单的调试很困难。

IT基础设施人员正准备分裂DomainA和DomainB(未来的行动之一:将大量用户从DomainA迁移到DomainB,然后将DomainB作为登录域),并尝试对运行信息的影响最小。

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误   服务器未找到或无法访问。   
验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。

1 个答案:

答案 0 :(得分:1)

立即使用IP地址。如果你真的,真的,真的想要在连接字符串中使用友好名称,那么如果网络用户无法使名称解析工作,请使用hosts文件。当服务器移动时,您可以更新配置文件以指向新服务器(按名称,如果他们知道如何使其工作,或者如果没有则通过新IP),或更新hosts用于将旧友好名称映射到新IP地址的文件。

我们无法真正告诉您它为何被改变或为何被破坏 - 一旦您向他们提供证据,例如能够通过IP地址远程登录到端口48000的机器,您应该从您的网络团队得到更好的答案但是不是名字。他们可能不知道修复,但可能会在ServerFault上更好地询问具体案例。