Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 到SQL Server群集的连接字符串_C#_Sql Server_Ado.net_Cluster Computing - Fatal编程技术网

C# 到SQL Server群集的连接字符串

C# 到SQL Server群集的连接字符串,c#,sql-server,ado.net,cluster-computing,C#,Sql Server,Ado.net,Cluster Computing,有人能告诉我或告诉我如何将连接字符串写入SQL Server群集实例吗 我想建立到SQL Server群集特定实例的数据库(初始目录)的可信连接。我发现了很长一段时间,但无法从谷歌找到正式答案 我要的是C#ADO.Net代码的连接字符串 我知道如何将连接字符串写入普通的单机非群集SQL Server实例。服务器名称是虚拟服务器名称 例如: 您有物理pserver1,pserver2 这些共同构成集群cserver -这将承载虚拟服务器vserv1(也许,请参见下文)vserv2 因此,它是v

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

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

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


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

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

例如:

  • 您有物理
    pserver1
    pserver2
  • 这些共同构成集群
    cserver
    -这将承载虚拟服务器
    vserv1
    (也许,请参见下文)
    vserv2
因此,它是
vserv1\instancename
vserv1
。您不使用物理服务器名称

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

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

  • 在A/P中,仅托管一个虚拟服务器,而备用节点未被积极使用
  • 在A/A中,有2个虚拟服务器,通常每个节点承载一个虚拟服务器。每个节点都是另一个节点的备用节点

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

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

data-source=tcp:AG1-Listener

从字面上看,这是没有记载。我很幸运,在某个博客上找到了一个指向集群的连接字符串,并从中找到了它。

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

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

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

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


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

困惑--“主机虚拟服务器vserv1(可能还有)vserv2”,您的意思是集群有两个虚拟服务器名称,vserv1和vserv2?或者它是一个输入错误?SQL群集非默认实例的连接字符串格式是什么?vserv1\instancename(或vserv2\instancename)在a/a场景中使用机器名并不取决于是否位于同一个域中,只取决于DNS中公开的名称。并且具有合理的DNS配置:这可能是某些组织中的问题:-(.你说得对;我一直在关注连接字符串,但没有注意到这一点,对不起。@Turro,1.SQL群集非默认实例的连接字符串格式是什么?2.对于SQL群集,我们是否允许按机器名而不是虚拟服务器名连接以访问单个机器?这样的访问是否会损坏两个virtu之间的数据镜像艾尔·诺兹?@Richard,你是说什么问题?@George2:1)连接字符串总是相同的,您只需在DataSource=xxx中指定要访问的实例的名称;例如:Password=pwd;Persist Security Info=True;User ID=userid;Initial Catalog=dbname;Data Source=thenameortheipAddressOfInstance;它现在记录在这里: