План обслуживания для зеркального отображения базы данных 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 в качестве условия для запуска последовательности резервного копирования. Пожалуйста, дайте мне знать, если это помогло. ура