gpt4 book ai didi

c++ - 修改sys.database_mirroring中的mirroring_partner_instance名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:52:42 25 4
gpt4 key购买 nike

我在正确故障转移到镜像数据库时遇到问题。当我连接到主体数据库 (dbx)(镜像已启用并已设置)并且我对主体数据库进行故障转移(关闭 SQL Server 以模拟崩溃)时,我无法再无故障地发送查询。这是预期的,因为以前的连接现在丢失了。

我想简单地关闭我的连接和句柄并重新建立一个新连接,使用相同的连接字符串,然后重新连接到镜像数据库(dby,它现在是主体数据库)。

我的连接字符串如下:

Driver={SQL Native Client};Server=dbx;Failover_Partner=dby;Database=db;Uid=uid;Pwd=pwd;Network=DBMSSOCN;

通过研究,我了解到连接中的 Failover_Partner 参数几乎没有值(value)。它仅在主服务器关闭且首次建立新连接时使用。出于某种原因,当与主体建立连接并使用在 sys.database_mirroring 表中找到的 mirroring_partner_instance 时,Failover_Partner 在内部被覆盖。因此,当我将 Failover_Partner 指定为 dby 时,在建立连接后,我查询它认为的故障转移伙伴是什么,它返回故障转移伙伴的 INSTANCE 名称,而不是 DNS 名称 (dby)。

这是个问题,我不能使用 INSTANCE 名称作为故障转移伙伴。我需要使用 DNS 名称作为故障转移伙伴。

所以我的问题是:

  • 有没有办法修改 sys.database_mirroring 条目并更改 mirroring_partner_instance?
  • 这个字段从哪里获取它的值?
  • 有没有其他方法可以强制 SQL Server 使用 DNS 名称而不是 INSTANCE 名称?

最佳答案

我找到了这个问题的答案,以防有人遇到相同或类似的问题。

我必须修改 SQL 中的 @@SERVERNAME 属性。它在内部设置为计算机 WIN-... 实例名称,我可以删除它并使用以下命令添加我想要的服务器名称:

获取当前服务器名称(WIN_NAME)

SELECT @@SERVERNAME

放下 WIN-NAME

SP_DropServer  'WIN_NAME' 
GO
SP_AddServer 'SERVER_NAME',local
GO

重新启动 SQL Server 以查看更改是否生效。

关于c++ - 修改sys.database_mirroring中的mirroring_partner_instance名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com