2ノードのAGセットアップがあります(FCIではありません)。ノードが現在新しいプライマリであることを示すエラーログにある文字列に基づいてジョブをトリガーするアラートを構成する必要があります。
使用したい文字列は次のとおりです。
「primary_pending」から「primary_normal」
これは、セカンダリノードがプライマリになるときにエラーログに表示されるものです。新しいプライマリレプリカを使用するようにSSRSを自動化するために作成したSQLジョブを開始するアラートが必要です。
以下は私が設定したアラートですが、適切にトリガーされていません。このアラートがトリガーされたときにジョブを実行するようにアラートが構成されています。
フェイルオーバーが発生しても、ジョブは開始されません。使用されたエラー番号が原因である可能性があります。これの使用に関するブログ投稿を見つけましたが、再び見つけることができないようです。エラーログには、このテキストの行にエラー番号が表示されないので、それが問題だと思います。
エラーログで見つかったテキストに基づいてアラートをトリガーするにはどうすればよいですか、またはこれを行うより良い方法はありますか?
すべてのジョブのプライマリ/セカンダリステータスをチェックする条件付きロジックはありますが、1回だけ実行する(最初にプライマリになる)ため、このジョブには使用できません。
データベース名の選択で<all databases>
を選択する必要があります。チェックしているエラーは特定のデータベースに関連していないため、データベースを指定することで効果的にフィルタリングされ、アラートはそれを気にしません。
RAISERRORを使用してこれをテストし、「これ」または「それ」を含むメッセージをログに記録したところ、問題なく動作しました。最初は一重引用符を区切る必要があるかもしれないと思いましたが、私のテストではそうしなかったのでうまくいきました。