我们正在使用 SQL Server 数据库镜像,并尝试创建一个数据库维护计划来备份数据库。问题是,当服务器不是主数据库时,计划会失败。我想知道在这种情况下最佳做法是什么,有没有办法让维护计划只备份主数据库?
答案1
答案2
如果您使用的是 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'
然后仅备份符合该标准的数据库。
答案3
应该有一种方法,在维护计划中有一个 T-SQL 语句任务执行:
declare @primary bit = 0
select @primary=1
from sys.database_mirroring
where mirroring_role = 1
并使用@primary作为启动备份序列的条件。如果它有帮助,请告诉我。谢谢