23

T-SQLからプログラムでSQLアクティブ-パッシブフェールオーバークラスターのアクティブノードを判別する方法を知っている人はいますか?

@@SERVERNAME両方のノードで同一の仮想サーバー名のみを返します。

データに基づいて決定を下す予定はありません-フェイルオーバーがそのことを行うと信じています-しかし、イベントが発生したときにクラスター内のどのノードがアクティブであったかを知ることができるように、イベントログに情報を含めたいと思います、またはフェイルオーバーの結果として例外が発生するかどうかを判断するのに役立ちます。

4

3 に答える 3

0

これを試してください。これは、サーバーが可用性グループのプライマリ サーバーであるかどうかを確認し、この条件に基づいて X を実行します。

IF EXISTS (SELECT ars.role FROM sys.dm_hadr_availability_replica_states ars JOIN sys.availability_groups ag ON ars.group_id = ag.group_id WHERE ars.role_desc = 'PRIMARY')
    BEGIN
        SELECT 'PRIMARY' -- DO STUFF IF PRIMARY
    END
ELSE
    BEGIN
        SELECT 'NOT PRIMARY' --- DON'T DO STUFF
    END
于 2020-09-19T17:56:39.883 に答える