Зеркальное отображение базы данных 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 - нет.