Назад | Перейти на главную страницу

План обслуживания для зеркального отображения базы данных SQL Server

Мы используем зеркальное отображение базы данных SQL Server и пытаемся создать план обслуживания базы данных для резервного копирования базы данных. Проблема в том, что, когда сервер не является основной базой данных, план не выполняется. Мне было интересно, что лучше всего подходит в этой ситуации и есть ли способ сделать резервную копию плана обслуживания только для первичной базы данных?

Если вы используете SQL 2008, в задаче резервного копирования есть прекрасная опция «Игнорировать базы данных, когда состояние не в сети». Это обходит базы данных в состоянии восстановления / зеркалирования для вас.

Для SQL 2000 Box вы можете проверить следующее свойство в каждой базе данных

SELECT NAME FROM sysdatabases WHERE databasepropertyex(sysdatabases .Name, 'Status') = 'ONLINE'

Для SQL 2005 + Box вы можете использовать это

SELECT NAME FROM sys.databases systemdatabases  WHERE state_desc = 'ONLINE'

Затем выполняйте резервное копирование только тех баз данных, которые соответствуют этим критериям.

Я не нашел четких и быстрых рекомендаций - один вариант Воссоздать задания и зависимости на зеркальном сервере с отключенными заданиями

Затем используйте предупреждение WMI для DATABASE_MIRRORING_STATE_CHANGE, чтобы включить / отключить задание. Это задание также будет выполняться на основном сервере и отключать задание при аварийном переключении - см. этот ссылка на другой вариант

Вы можете создать резервную копию хранимой процедуры с логикой только для резервного копирования базы данных, которая не находится в состоянии восстановления, например этот

Должен быть способ, чтобы задача оператора T-SQL в плане обслуживания выполняла:

declare @primary bit = 0
select @primary=1
from sys.database_mirroring
where mirroring_role = 1

и использование @primary в качестве условия для запуска последовательности резервного копирования. Пожалуйста, дайте мне знать, помогло ли это. Ура