如何获取数据库镜像状态的描述

时间:2013-01-15 14:54:24

标签: tsql sql-server-2008-r2 database-mirroring

我在我的SQL服务器上设置了警报,以便在我this article的任何镜像数据库的镜像状态发生变化时提醒我。

一切正常,但我想知道是否有任何办法,通过T-SQL,从 $(WMI(State))?

我链接的文章提供了所有可能状态及其含义的列表,因此我可以创建自己的表或使用CASE语句,但如果我可以使用内置函数或从中选择,那将会很好现有的表格。也许今天我的Google-Power很低,但我找不到任何东西。

1 个答案:

答案 0 :(得分:0)

为了做到这一点,我最终在我的脚本中添加了一个CASE语句 - 我本可以创建一个表,但是由于我想将脚本复制到几个不同的服务器,所以它更具可移植性。

declare @MirrorStateDesc varchar(50)
select @MirrorStateDesc = '$(ESCAPE_NONE(WMI(State)))'
select @MirrorStateDesc = CASE @MirrorStateDesc WHEN '7' THEN 'Manual Failover' WHEN '8' THEN 'Automatic Failover' WHEN '10' THEN 'No Quorum' WHEN '12' THEN 'Principle Running Exposed' ELSE @MirrorStateDesc  END

我只在状态7,8,10和12上使用此脚本,因此它们是我添加到我的case语句中的唯一脚本。其他值和描述在我在问题中链接的页面上,如果有人想扩展脚本以供自己使用。

我仍然感到惊讶的是,虽然没有内置功能可以做到这一点!