Зеркальное отображение базы данных SQL Server 2008

У меня небольшая проблема с подключением к базе данных. Есть 2 сервера базы данных:

DBSA, DBSB

DBSA (primary server)
DBSB (mirrored server)

Я соединяюсь со следующей строкой подключения:

Data Source=DBSA;Failover Partner=DBSB;Persist Security Info=True;Initial Catalog=database;User ID=user;Password=password

Когда я запускаю свою программу на моем компьютере, она работает, но когда я пытаюсь запустить программу на веб-сервере в демилитаризованной зоне, аварийное переключение не работает.

Кто-нибудь знает причину этого?

=> Я забыл сказать в вопросе. Существует также свидетельский сервер.

2 ответа

Приложение должно получать имя сервера отработки отказа от сервера SQL (возможно, даже не имя FQDN) вместо строки подключения в web.config,

Попробуйте запустить ipconfig /flushdns затем восстановление после сбоя базы данных SQL и после того, как вы получите первую ошибку исключения SQL, запустите ipconfig /displaydns чтобы увидеть, какое имя он не может решить. Бьюсь об заклад, это не похоже на псевдоним БД, который вы установили в строке подключения для партнера по отказоустойчивости...

Мне приходилось иметь дело с тем же - реализация Microsoft немного запутанная, поскольку они пытаются охватить все возможные сценарии.

Запустите это на вашей основной БД

SELECT DB_NAME(database_id) AS 'DatabaseName'
, mirroring_role_desc 
, mirroring_safety_level_desc 
, mirroring_state_desc 
, mirroring_partner_instance
FROM
sys.database_mirroring WHERE mirroring_guid IS NOT NULL; 

Значение, возвращаемое в mirroring_partner_instance, является именем сервера, которое будет использоваться вашим соединением для восстановления после сбоя, а не тем, которое вы указали в конфигурации. Я полагаю, что ваш компьютер может видеть этот сервер под этим именем, а при работе в DMZ - нет.

Другие вопросы по тегам