Проверка состояния зеркального отображения базы данных в C # - PullRequest
0 голосов
/ 10 ноября 2010

Наше приложение C # должно подключаться к базам данных SQL 2005 и 2008 и проверять текущее состояние зеркального отображения базы данных (например, включено ли, приостановлено, приостановлено, отключено и т. Д.). Есть ли свойства, где я могу это проверить?

Все наши базы данных, которые зеркалируются, не имеют свидетелей и аварийного переключения вручную (синхронное зеркалирование).

Очень признателен, если кто-нибудь может помочь или указать мне какую-то документацию, поиски в Google не слишком активны по этому вопросу.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

Текущее состояние отображается в sys.database_mirroring:

SELECT mirroring_state 
FROM sys.database_mirroring
WHERE database_id = DB_ID('...');
0 голосов
/ 10 ноября 2010

В статье MSDN здесь описаны все хранимые в системе процедуры, которые предоставят вам необходимую информацию

Вы также можете получить или обновить текущий статус, запустив систему sp_dbmmonitorresults.хранимая процедура.

Одно неочевидное различие между использованием sp_dbmmonitorresults и использованием таблицы sys.database_mirroring, которая находится в ответе Ремуса, заключается в необходимых разрешениях

Права, необходимые для sys.database_mirroring

Согласно статье MSDN Remus ссылается

Чтобы увидеть строку для базы данных, отличной от master или tempdb, вы должны быть либо владельцем базы данных, либо иметь как минимум ALTER ANY DATABASE илиПОСМОТРЕТЬ ЛЮБОЕ разрешение на уровне сервера базы данных или разрешение CREATE DATABASE в базе данных master.Чтобы увидеть ненулевые значения в зеркальной базе данных, вы должны быть членом предопределенной роли сервера sysadmin

Права, необходимые для sp_dbmmonitorresults

В соответствии с ранее упомянутым MSDNстатья о зеркалировании SP

членов предопределенной роли сервера sysadmin и пользователей, которые были добавлены в предопределенную роль базы данных dbm_monitor

...