【发布时间】:2013-04-03 18:43:58
【问题描述】:
我需要与网络基础设施人员坐在一起,看看为什么会突然发生如下 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 是否配置为允许远程连接。
【问题讨论】:
-
你的连接字符串是什么?是名称解析问题吗?您是否尝试使用 IP 地址(您可以 ping/traceroute 的地址)而不是名称?
-
谢谢:在配置文件中尝试了基于 IP 的连接字符串,现在它与数据库建立了初始连接(未来连接失败,因为这也是基于名称的,明天将在 TEST 数据库中更改)
-
您是说服务器的IP地址可能会改变,但名称不会?如果数据库被移动到不同的服务器,那么both IP 地址和名称都会改变,所以无论哪种情况,你的连接字符串都必须改变。
-
跨域名解析会很棘手,尤其是在环境被“锁定”并且您不太可能建立完全开放的信任等情况下。您可以做什么为了避免以后必须更改连接字符串,请使用
hosts文件将SomeName映射到current IP,然后您可以只更改hosts文件。但是,我看不出更改配置文件能给你带来什么。 -
是:将服务器移动到新数据中心时,IP 地址可能会发生变化。名称更方便,因为它表明它是哪台 OTAP 机器。但我们可以在一段时间内使用 IP。
标签: sql-server-2008 windows-7 .net-4.0