谁能指出我或告诉我如何将连接字符串写入 SQL Server 群集实例?
我想与 SQL Server 集群的特定实例的数据库(初始目录)建立可信连接。我找了很长一段时间,但找不到谷歌的官方答案。
我要求 C# ADO.Net 代码的连接字符串。
我知道如何将连接字符串写入普通的单机非集群 SQL Server 实例。
谁能指出我或告诉我如何将连接字符串写入 SQL Server 群集实例?
我想与 SQL Server 集群的特定实例的数据库(初始目录)建立可信连接。我找了很长一段时间,但找不到谷歌的官方答案。
我要求 C# ADO.Net 代码的连接字符串。
我知道如何将连接字符串写入普通的单机非集群 SQL Server 实例。
服务器名称是虚拟服务器名称。
例子:
pserver1
,pserver2
cserver
- 这托管虚拟服务器vserv1
(也许,见下文)vserv2
所以,它是vserv1\instancename
或vserv1
。您不使用物理服务器名称
根据虚拟服务器的可能名称数量进行编辑:
集群可以是主动/被动/A/P)或主动/主动(A/A)
连接字符串以通常的方式编写;但在集群中,您有 3 个(或更多)地址:一个用于构成集群的每个节点,一个用于集群。例如:我们有两个节点,地址分别为 192.168.0.10 和 192.168.0.20:如果您在连接字符串中写下其中一个数字作为 DataSource,您将获得对该物理实例的访问权限。但是,如果您想访问集群(虚拟)Sql Server 实例,则必须使用集群的地址(例如:192.168.0.230)作为数据源。当然,您也可以使用机器名称而不是 IP 地址,前提是您与集群在同一个域中。
这在我能找到的任何地方都没有记录,但我必须使用集群上可用性组侦听器的名称。例如:
data-source=tcp:AG1-Listener
从字面上看,这在任何地方都没有记录。我很幸运,在某处的博客上找到了一个集群的连接字符串,并从那里弄清楚了。
我知道这是一个旧线程,但是:
https://support.microsoft.com/en-us/kb/273673
解释了为什么应该在连接上指定超时。摘录如下。
如果群集管理员对 SQL Server 服务器进行故障转移,则不会发送 TCP 重置数据包。如果 SQL Server 进程被操作系统(由 Kill.exe)终止,则会发送重置数据包。
如果应用程序未指定查询超时参数或查询超时为零 (0),这可能会影响客户端应用程序。
如果应用程序没有查询超时值,则在发生故障转移后打开的连接将保持在 ESTABLISHED 状态。打开的连接没有关闭并且没有从这些连接发送更多 TCP 数据包的事实表明这些连接完全空闲。因为故障转移没有向客户端应用程序发送任何 TCP 重置数据包,所以这些打开的连接会无限期地等待查询结果(假设无限期查询超时),并可能导致连接停止响应(挂起)。