根据这篇文章,我已经在我的 SQL 服务器上设置了警报,以便在我的任何镜像数据库的镜像状态发生变化时提醒我。
一切正常,但我想知道是否有任何方法可以通过 T-SQL 从$(WMI(State))提供的状态 ID 获取数据库镜像状态的描述?
我链接到的文章提供了所有可能状态及其含义的列表,因此我可以创建自己的表或使用 CASE 语句,但如果我可以使用内置函数或从现有表中选择会很好. 也许我今天的 Google-Power 很低,但我什么都没找到。
根据这篇文章,我已经在我的 SQL 服务器上设置了警报,以便在我的任何镜像数据库的镜像状态发生变化时提醒我。
一切正常,但我想知道是否有任何方法可以通过 T-SQL 从$(WMI(State))提供的状态 ID 获取数据库镜像状态的描述?
我链接到的文章提供了所有可能状态及其含义的列表,因此我可以创建自己的表或使用 CASE 语句,但如果我可以使用内置函数或从现有表中选择会很好. 也许我今天的 Google-Power 很低,但我什么都没找到。
为此,我最终在我的脚本中添加了一个 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 语句中的唯一脚本。如果有人想扩展脚本以供自己使用,其他值和描述在我在问题中链接到的页面上。
我仍然很惊讶没有内置函数可以做到这一点!