连接到SQL Server群集的字符串

时间:2009-04-15 13:14:18

标签: c# sql-server ado.net cluster-computing

有人能指点我或告诉我如何将连接字符串写入SQL Server集群实例吗?

我想建立与SQL Server群集的特定实例的数据库(初始目录)的可信连接。我找了很长时间但找不到谷歌的正式答案。

我要求C#ADO.Net代码的连接字符串。

我知道如何将连接字符串写入普通的单机非群集SQL Server实例。

4 个答案:

答案 0 :(得分:3)

服务器名称是虚拟服务器名称。

示例:

  • 您有实体pserver1pserver2
  • 这些一起构成群集cserver - 这托管虚拟服务器vserv1(也许,见下文)vserv2

所以,它是vserv1\instancenamevserv1。您不使用物理服务器名称

根据虚拟服务器的可能名称数进行编辑:

群集可以是主动/被动/ A / P)或主动/主动(A / A)

  • 在A / P中,仅托管一个虚拟服务器,并且未主动使用备用节点。
  • 在A / A中,有2个虚拟服务器,通常每个节点都有一个。每个节点都为另一个节点待机。

答案 1 :(得分:3)

连接字符串以通常的方式写入;但在群集中,您有3个(或更多)地址:每个节点一个用于构建群集,另一个用于群集。 例如:我们有两个节点,地址为192.168.0.10和192.168.0.20:如果您在连接字符串中记下其中一个数字作为DataSource,您将获得对该物理实例的访问权限。但是,如果要访问群集(虚拟)Sql Server实例,则必须使用群集的地址(例如:192.168.0.230)作为DataSource。 当然,如果您与群集位于同一个域中,也可以使用计算机的名称而不是IP地址。

答案 2 :(得分:0)

我没有在任何可以找到的地方记录,但我必须在群集上使用可用性组侦听器的名称。例如:

data-source=tcp:AG1-Listener

从字面上看,这无处可见。我很幸运,在某个地方找到了一个连接到某个博客上的集群的连接字符串,并从中找到了它。

答案 3 :(得分:0)

我知道这是一个旧线程,但是:

https://support.microsoft.com/en-us/kb/273673

解释了为什么要在连接上指定超时。摘录如下。

如果SQL Server服务器由群集管理员进行故障转移,则不会发送TCP重置数据包。如果操作系统(通过Kill.exe)终止SQL Server进程,则会发送重置数据包。

如果应用程序未指定查询超时参数或查询超时为零(0),则可能会影响客户端应用程序。

如果应用程序没有查询超时值,则在发生故障转移后,打开的连接将保持在ESTABLISHED状态。开放连接未关闭且不再从这些连接发送TCP数据包这一事实表明这些连接完全空闲。由于故障转移未向客户端应用程序发送任何TCP重置数据包,因此这些打开的连接将无限期地等待查询结果(假设无限查询超时),并可能导致连接停止响应(挂起)。