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

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

3 ответа

Решение

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

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

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

Если вы используете 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'

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

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

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

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

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