0

この記事に従って、ミラーリングされたデータベースのミラーリング状態が変化したときに警告するように、SQL サーバーにアラートを設定しました。

すべて正常に動作していますが、T-SQL を介して、 $(WMI(State))によって提供される状態 ID からデータベース ミラーリング状態の説明を取得する方法があるかどうか疑問に思っていました。

私がリンクした記事には、考えられるすべての状態とその意味のリストが記載されているので、独自のテーブルを作成したり、CASE ステートメントを使用したりできますが、組み込み関数を使用したり、既存のテーブルから選択したりできると便利です. 今日は Google パワーが低いのかもしれませんが、何も見つかりませんでした。

4

1 に答える 1

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ステートメントに追加したのはこれらのスクリプトだけです。他の値と説明は、誰かが自分の用途のためにスクリプトを拡張したい場合は、質問でリンクしたページにあります。

しかし、これを行うための組み込み関数がないことにまだ驚いています!

于 2013-01-22T11:31:52.360 に答える