Измените имя mirroring_partner_instance в sys.database_mirroring

У меня проблема с правильным переключением на зеркальную базу данных. Когда я подключен к основной базе данных (dbx) (зеркальное отображение включено и настроено), и я перехожу через основную базу данных (отключаю SQL Server для имитации сбоя), я больше не могу отправлять запросы без сбоя. Это ожидается, так как предыдущее соединение теперь потеряно.

Я хотел бы просто закрыть свои соединения и дескрипторы и заново установить новое соединение, используя ту же строку соединения, и повторно подключиться к зеркальной базе данных (dby, которая сейчас является основной базой данных).

Моя строка подключения выглядит следующим образом:

Драйвер = {Собственный клиент SQL}; Сервер = dbx; Failover_Partner = dby; База данных = db; Uid = uid; Pwd = pwd; Сеть = DBMSSOCN;

Проведя исследование, я узнал, что параметр Failover_Partner в соединении почти ничего не стоит. Он используется только в том случае, если основной сервер не работает и новое соединение устанавливается впервые. По какой-то причине Failover_Partner перезаписывается внутри, когда устанавливается соединение с принципалом, и вместо него используется mirroring_partner_instance, найденное в таблице sys.database_mirroring. Поэтому, когда я указываю Failover_Partner как dby, после того, как я устанавливаю соединение, я запрашиваю, что он считает партнером по отказоустойчивости, и он возвращает INSTANCE-имя партнера по отказоустойчивости, а не DNS-имя (dby).

Вот проблема, я не могу использовать имя INSTANCE в качестве партнера по отработке отказа. Мне необходимо использовать DNS-имя в качестве партнера по отработке отказа.

Так что мой вопрос (ы) заключается в следующем:

  • Есть ли способ изменить запись sys.database_mirroring и изменить mirroring_partner_instance?
  • Откуда это поле получает свое значение?
  • Есть ли другой способ заставить SQL Server использовать имя DNS, а не имя INSTANCE?

2

Решение

Я нашел ответ на этот вопрос в случае, если у кого-то есть такая же или похожая проблема.

Мне пришлось изменить свойство @@ SERVERNAME в SQL. Для него было установлено внутреннее имя экземпляра WIN -… компьютера, и я смог удалить его и добавить желаемое имя сервера с помощью следующих команд:

Получить текущее имя сервера (WIN_NAME)

SELECT @@SERVERNAME

Бросьте имя

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

Перезапустите SQL Server, чтобы изменения вступили в силу.

0

Другие решения