修改sys.database_mirroring中的mirroring_partner_instance名称
我正确地故障转移到镜像数据库时遇到问题。当我连接到主体数据库(dbx)(镜像已启用并设置)并对主体数据库进行故障切换(关闭SQL Server以模拟崩溃)时,我无法再发送查询而没有发生故障。这是预期的,因为之前的连接现在丢失了。修改sys.database_mirroring中的mirroring_partner_instance名称
我想简单地关闭我的连接和句柄,并使用相同的连接字符串重新建立一个新连接,并重新连接到镜像数据库(dby,它现在是主体数据库)。
我的连接字符串如下:
驱动程序= {SQL本机客户端};服务器= DBX; Failover_Partner = DBY;数据库= DB; UID = UID; PWD = PWD;网络= DBMSSOCN;
通过研究,我了解到连接中的Failover_Partner参数几乎毫无价值。它仅在主服务器关闭并且第一次建立新连接时使用。出于某种原因,当与主体建立连接并且使用sys.database_mirroring表中找到的mirroring_partner_instance代替时,Failover_Partner会在内部被覆盖。因此,当我将Failover_Partner指定为dby时,在建立连接后,我查询它认为故障切换伙伴的内容,并返回故障切换伙伴的INSTANCE名称而不是DNS名称(dby)。
这是问题所在,我无法使用INSTANCE名称作为故障转移伙伴。我需要使用DNS名称作为故障转移合作伙伴。
所以我的问题(S)是/是这样的:
- 是否有修改sys.database_mirroring进入并改变mirroring_partner_instance的方法吗?
- 该字段从哪里获得它的价值?
- 是否有任何其他方式强制SQL Server使用DNS名称而不是实例名称?
我发现这个问题的答案,以防万一任何人有相同或相似的问题。我不得不修改SQL中的@@ SERVERNAME属性。它在内部设置为计算机WIN -...实例名称,我能放弃它,并用下面的命令添加我想要的服务器名称:
获取当前服务器名称(WIN_NAME)
SELECT @@SERVERNAME
降WIN-NAME
SP_DropServer 'WIN_NAME'
GO
SP_AddServer 'SERVER_NAME',local
GO
重新启动SQL Server看到更改生效。