次の方法で共有


可用性グループの計画的な手動フェールオーバーの実行 (SQL Server)

このトピックでは、SQL Server 2014 で SQL Server Management Studio、Transact-SQL、または PowerShell を使用して、AlwaysOn 可用性グループでデータ損失 (計画的な手動フェールオーバー) なしで手動フェールオーバーを実行する方法について説明します。 可用性グループは、可用性レプリカのレベルでフェールオーバーします。 計画された手動フェールオーバーは、Always On可用性グループのフェールオーバーと同様に、セカンダリ レプリカをプライマリ ロールに移行し、同時に以前のプライマリ レプリカをセカンダリ ロールに移行します。

計画的な手動フェールオーバーは、プライマリ レプリカおよびターゲット セカンダリ レプリカが同期コミット モードで動作していて、現在同期されている場合にのみサポートされます。この場合、ターゲット セカンダリ レプリカ上の可用性グループに参加しているセカンダリ データベース内のすべてのデータが維持されます。 元のプライマリ レプリカがセカンダリ ロールに移行すると、そのデータベースはセカンダリ データベースになり、新しいプライマリ データベースとの同期が開始されます。 すべてが SYNCHRONIZED 状態に移行した後は、新しいセカンダリ レプリカが、将来の計画的な手動フェールオーバーのターゲットとして機能できるようになります。

注意

セカンダリ レプリカとプライマリ レプリカの両方に対して自動フェールオーバー モードを構成し、セカンダリ レプリカを同期すると、自動フェールオーバーのターゲットとしても機能できるようになります。 詳細については、「 可用性モード (AlwaysOn 可用性グループ)」を参照してください。

はじめに

制限事項と制約事項

前提条件と制限

  • ターゲットのセカンダリ レプリカとプライマリ レプリカは、両方とも同期コミット可用性モードで実行されている必要があります。

  • ターゲットのセカンダリ レプリカは、現在プライマリ レプリカと同期されている必要があります。 このためには、この可用性レプリカのすべてのセカンダリ データベースが可用性グループに参加している必要があり、対応するプライマリ データベースに同期されている必要があります (つまり、ローカル セカンダリ データベースは SYNCHRONIZED 状態である必要があります)。

    ヒント

    セカンダリ レプリカのフェールオーバーの準備状態を調べるには、sys.dm_hadr_database_cluster_states 動的管理ビューで is_failover_ready 列をクエリするか、AlwaysOn グループ ダッシュボード[フェールオーバーの準備] 列を確認します。

  • このタスクは、ターゲット セカンダリ レプリカ上でのみサポートされます。 ターゲット セカンダリ レプリカをホストするサーバー インスタンスに接続されている必要があります。

セキュリティ

アクセス許可

可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。

SQL Server Management Studio を使用する

可用性グループで手動フェールオーバーを行うには

  1. オブジェクト エクスプローラーで、フェールオーバーを行う可用性グループのセカンダリ レプリカをホストするサーバー インスタンスに接続し、サーバー ツリーを展開します。

  2. [AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。

  3. フェールオーバーする [可用性グループ] ノードを右クリックし、 [フェールオーバー] を選択します。

  4. 可用性グループのフェールオーバー ウィザードが起動します。 詳細については、「可用性グループのフェールオーバー ウィザードの使用 (SQL Server Management Studio)」を参照してください。

Transact-SQL の使用

可用性グループで手動フェールオーバーを行うには

  1. ターゲット セカンダリ レプリカをホストするサーバー インスタンスに接続します。

  2. ALTER AVAILABILITY GROUP ステートメントを使用します。次にその例を示します。

    ALTER AVAILABILITY GROUP group_name FAILOVER

    group_name は可用性グループの名前です。

    次の例では、 MyAg 可用性グループを接続されたセカンダリ レプリカに手動でフェールオーバーします。

    ALTER AVAILABILITY GROUP MyAg FAILOVER;  
    

PowerShell の使用

可用性グループで手動フェールオーバーを行うには

  1. ディレクトリ変更コマンド (cd) を使用して、ターゲット セカンダリ レプリカをホストするサーバー インスタンスに移動します。

  2. Switch-SqlAvailabilityGroup コマンドレットを使用します。

    注意

    コマンドレットの構文を表示するには、SQL Server 2014 PowerShell 環境で コマンドレットを使用Get-Helpします。 詳細については、「 Get Help SQL Server PowerShell」を参照してください。

    次の例では、 MyAg 可用性グループを指定したパスでセカンダリ レプリカに手動でフェールオーバーします。

    Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg  
    

SQL Server PowerShell プロバイダーを設定して使用するには

補足情報: 可用性グループの手動フェールオーバー後

可用性グループの自動フェールオーバー セットの外部でフェールオーバーした場合は、WSFC ノードのクォーラム投票を調整して、新しい可用性グループの構成を反映します。 詳細については、「windows Server フェールオーバー クラスタリング (WSFC) with SQL Server」を参照してください。

参照

AlwaysOn 可用性グループの概要 (SQL Server)
フェールオーバーとフェールオーバー モード (AlwaysOn 可用性グループ)
可用性グループの強制手動フェールオーバーの実行 (SQLServer)