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

Sql server 2008 从网络共享中解析连接字符串中的名称失败,sql-server-2008,windows-7,.net-4.0,Sql Server 2008,Windows 7,.net 4.0,我需要和网络基础设施人员坐在一起,看看为什么会突然出现下面这样的SQL连接错误 作为准备,请提供出现此错误的原因,以及我们可以在应用程序和/或基础架构方面尝试哪些方法来避免此错误 从网络共享启动应用程序时出错 在本地复制文件并在本地启动时,不会发生此错误 误差总是可以再现的 几周前(在我去度假之前),它运行得很好,所以我不确定它是什么时候出现的 现在,复杂性: 用户在域中 工作站在域B中 数据库服务器位于域B中 使用用户/密码登录数据库(尚未建立可信连接) 登录域是DomainA 网络共享

我需要和网络基础设施人员坐在一起,看看为什么会突然出现下面这样的SQL连接错误

作为准备,请提供出现此错误的原因,以及我们可以在应用程序和/或基础架构方面尝试哪些方法来避免此错误

  • 从网络共享启动应用程序时出错
  • 在本地复制文件并在本地启动时,不会发生此错误
  • 误差总是可以再现的
  • 几周前(在我去度假之前),它运行得很好,所以我不确定它是什么时候出现的
现在,复杂性:

  • 用户在域中
  • 工作站在域B中
  • 数据库服务器位于域B中
  • 使用用户/密码登录数据库(尚未建立可信连接)
  • 登录域是DomainA
  • 网络共享在域中,但作为DFS的一部分
  • 域A和域B之间的双向信任
  • 客户端应用程序是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的连接字符串,如下所示,这是可行的,因此它是一个名称解析的东西:

Data Source=IPAddress\InstanceName,48000;Database=DBName;...
由于IP地址可能会更改,我们希望保留名称(但IP地址可以工作一段时间)。
我们应该做些什么来进一步研究名称解析问题

换言之:

为什么从网络共享开始时名称解析不同 而不是从本地驱动器?为什么过去没有什么不同

环境非常封闭(典型的公司环境),所以简单的调试可能很困难

IT基础设施人员正在准备拆分DomainA和DomainB(未来的行动之一:将大量用户从DomainA移动到DomainB,然后使DomainB成为登录域),并尽量减少对运行信息的影响

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


现在使用IP地址。如果您真的、真的、真的希望在连接字符串中有一个友好的名称,那么如果您的网络人员无法使用名称解析,请使用
hosts
文件。当服务器移动时,您可以更新配置文件以指向新服务器(如果他们当时知道如何使其工作,则按名称,否则按新IP),或者更新
hosts
文件以将旧的友好名称映射到新IP地址


我们无法真正告诉您它为什么会更改或损坏-一旦您向您的网络团队提供证据,例如能够通过IP地址而不是名称远程登录到端口48000上的机器,您应该从他们那里得到更好的答案。他们可能不知道修复方法,但最好还是继续询问具体情况。

您的连接字符串是什么?这是一个名称解析问题吗?您是否尝试使用IP地址(可以ping/traceroute的地址)而不是名称?谢谢:在配置文件中尝试了基于IP的连接字符串,现在它获得了到DB的初始连接(未来的连接失败,因为它也是基于名称的,明天将在测试DB中更改)您是否说服务器的IP地址可能会更改,但是这个名字不会吗?如果将数据库移动到另一台服务器,则IP地址和名称都将更改,因此无论哪种情况,您的连接字符串都必须更改。跨域名解析将非常棘手,尤其是在“锁定”环境的情况下您不太可能建立完全开放的信任等。您可以做的是避免以后更改连接字符串,即使用
hosts
文件将
SomeName
映射到
current IP
,然后您可以只更改
hosts
文件。但是,我看不出改变配置文件有什么好处。是的:当服务器移动到新的数据中心时,IP地址可能会改变。名称更方便,因为它指示它是哪台OTAP机器。但是我们可以暂时使用IP。我们明天会按照您的指示进行操作,并告知结果。