SQL Server数据库镜像的维护计划

我们正在使用SQL Server数据库镜像,我们正在尝试创build一个数据库维护计划来备份数据库。 问题是当服务器不是主数据库时,计划失败。 我想知道在这种情况下最好的做法是什么,有没有办法让维护计划只备份主数据库?

没有硬性和快速的build议,我发现 – 一个选项重新创build作业和镜像服务器上的依赖项与禁用的作业

然后在DATABASE_MIRRORING_STATE_CHANGE上使用W​​MI警报来启用/禁用作业。此作业也将在主节点上运行,并在故障转移时禁用该作业 – 请参阅此链接了解其他变体

您可以使用逻辑创build一个备份存储过程,只备份不处于恢复状态的数据库

如果您使用的是SQL 2008,备份任务有一个可爱的“国家不在线时忽略数据库”选项。 这会绕过处于还原/镜像状态的数据库。

对于SQL 2000 Box,您可以在每个数据库上检查以下属性

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

对于SQL 2005 +盒子,你可以使用这个

 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作为启动备份序列的条件。 请让我知道是否有帮助。 干杯