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

Dar*_*ren 6 cluster mirror sql-server

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

小智 5

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

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

SELECT NAME FROM sysdatabases WHERE databasepropertyex(sysdatabases .Name, 'Status') = 'ONLINE'
Run Code Online (Sandbox Code Playgroud)

对于 SQL 2005 + Box,您可以使用它

SELECT NAME FROM sys.databases systemdatabases  WHERE state_desc = 'ONLINE'
Run Code Online (Sandbox Code Playgroud)

然后只备份满足该条件的数据库。


CPU*_*USY 2

我发现没有硬性建议 - 一个选项在禁用作业的情况下在镜像服务器上重新创建作业和依赖项

然后在 DATABASE_MIRRORING_STATE_CHANGE 上使用 WMI 警报来启用/禁用该作业。该作业也将在主数据库上运行,并在故障转移时禁用该作业 - 请参阅链接了解另一个变体

您可以创建一个备份存储过程,其逻辑仅备份不处于恢复状态的数据库,如下所示