Always On 可用性グループ機能を有効または無効にする

適用対象:SQL Server

Always On 可用性グループを有効にすることは、サーバー インスタンスで可用性グループを使用するための前提条件です。 可用性グループを作成および構成するには、1 つ以上の可用性グループの可用性レプリカがホストされる SQL Server の各インスタンスで Always On 可用性グループ機能が有効になっている必要があります。

重要

WSFC クラスターを削除してから再作成した場合は、元の WSFC クラスター上の可用性レプリカをホストしていた SQL Server の各インスタンスについて、Always On 可用性グループ機能を無効にしてから再度有効にする必要があります。

前提条件

  • SQL Server 2017 および Windows Server 2016 より前のバージョンでは、Always On 可用性グループ機能を有効にするには、インスタンスが Windows Server フェールオーバー クラスター (WSFC) ノードに存在する必要がありました。 SQL Server 2017 および Windows Server 2016 以降では、読み取りスケール可用性グループをサポートするために、SQL Server インスタンスが Windows Server フェールオーバー クラスターに存在していなくても、可用性グループ機能を有効にできるようになりました。

  • サーバー インスタンスでは SQL Server をサポートする Always On 可用性グループエディションを実行する必要があります。 詳細については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。

  • 一度に 1 つのサーバー インスタンスでのみ AlwaysOn 可用性グループを有効にします。 Always On 可用性グループを有効にした後、SQL Server サービスが再起動するまで待ってから、別のサーバー インスタンスに進んでください。

可用性グループの作成と構成に関するその他の前提条件については、「Always On 可用性グループの前提条件、制限事項、推奨事項 (SQL Server)」を参照してください。

アクセス許可

SQL Server のインスタンスで Always On 可用性グループが有効になっている限り、そのサーバー インスタンスは WSFC クラスターを完全に制御できます。

ローカル コンピューターの Administrator グループのメンバーシップおよび WSFC クラスターに対するフル コントロール権限が必要です。 PowerShell を使用して AlwaysOn を有効にする場合は、 [管理者として実行] オプションを使用してコマンド プロンプト ウィンドウを開いてください。

Active Directory の Create Objects 権限と Manage Objects 権限が必要です。

機能が有効になっているかどうかの確認

SQL Server Management Studio を使用する

AlwaysOn 可用性グループが有効になっているかどうかを調べるには

  1. オブジェクト エクスプローラーでサーバー インスタンスを右クリックし、[プロパティ]をクリックします。

  2. [サーバーのプロパティ] ダイアログ ボックスの [全般] ページをクリックします。 [HADR が有効] プロパティに、次のいずれかの値が表示されます。

    • True(AlwaysOn 可用性グループが有効である場合)

    • False(AlwaysOn 可用性グループが無効である場合)

Transact-SQL の使用

AlwaysOn 可用性グループが有効になっているかどうかを調べるには

  1. 次の SERVERPROPERTY ステートメントを使用します。

    SELECT SERVERPROPERTY ('IsHadrEnabled');  
    

    IsHadrEnabled サーバー プロパティの設定は、次のように SQL Server のインスタンスに対して Always On 可用性グループが有効であるかどうかを示します。

    • IsHadrEnabled = 1 の場合: AlwaysOn 可用性グループが有効

    • IsHadrEnabled = 0 の場合: AlwaysOn 可用性グループが無効

    注意

    IsHadrEnabled サーバー プロパティの詳細については、「SERVERPROPERTY (Transact-SQL)」を参照してください。

PowerShell の使用

AlwaysOn 可用性グループが有効になっているかどうかを調べるには

  1. 既定値 (cd) を、Always On 可用性グループが有効であるかどうかを確認するサーバー インスタンスに設定します。

  2. PowerShell コマンド Get-Item を入力します。

    PS SQLSERVER:\SQL\NODE1\DEFAULT> get-item . | select IsHadrEnabled  
    

    Note

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

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

機能を有効にする

AlwaysOn を有効にする場合に使用するツール:

SQL Server 構成マネージャーの使用

Always On 可用性グループを有効にするには

  1. Always On 可用性グループ有効にする SQL Server インスタンスをホストする Windows Server フェールオーバー クラスター (WSFC) ノードに接続します。

  2. [スタート] メニューで、[すべてのプログラム][Microsoft SQL Server][構成ツール] の順にポイントして、[SQL Server 構成マネージャー] をクリックします。

  3. SQL Server 構成マネージャーで、[SQL Server のサービス] をクリックし、SQL Server (<インスタンス名>) を右クリックして、[プロパティ] をクリックします。ここで、<インスタンス名> は、Always On 可用性グループを有効にするローカル サーバー インスタンスの名前です。

  4. [AlwaysOn 高可用性] タブを選択します。

  5. [Windows フェールオーバー クラスター名] フィールドに、ローカル フェールオーバー クラスターの名前が表示されていることを確認します。 このフィールドが空白の場合、現在、このサーバー インスタンスでは Always On 可用性グループがサポートされていません。 ローカル コンピューターがクラスター ノードではないか、WSFC クラスターがシャットダウンされているか、このエディションの SQL Server では Always On 可用性グループがサポートされていません。

  6. [AlwaysOn 可用性グループを有効にする] チェック ボックスをオンにし、 [OK] をクリックします。

    SQL Server 構成マネージャーによって変更内容が保存されます。 その後、 SQL Server サービスを手動で再起動する必要があります。 業務上の要件に合った時間帯を選んで再起動することができます。 SQL Server サービスが再起動されると、Always On が有効になり、IsHadrEnabled サーバー プロパティが 1 に設定されます。

SQL Server PowerShell の使用

AlwaysOn を有効にするには

  1. ディレクトリ変更コマンド (cd) を使用して、AlwaysOn 可用性グループを有効にするサーバー インスタンスに移動します。

  2. AlwaysOn 可用性グループを有効にするには、Enable-SqlAlwaysOn コマンドレットを使用します。

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

    Note

    Enable-SqlAlwaysOn コマンドレットによって SQL Server サービスを再起動するかどうかを制御する方法については、このトピックで後述する「SQL Server サービスがコマンドレットによって再起動される条件」を参照してください。

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

例: Enable-SqlAlwaysOn

次の PowerShell コマンドを使用すると、SQL Server のインスタンス (Computer\Instance) に対して Always On 可用性グループが有効になります。

Enable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance  

機能を無効にする

重要

AlwaysOn を無効にできるサーバー インスタンスは一度に 1 つだけです。 Always On 可用性グループを無効にした後、SQL Server サービスが再起動するまで待ってから、別のサーバー インスタンスに進んでください。

推奨事項

サーバー インスタンスで AlwaysOn を無効にする前に、次の操作を行うことをお勧めします。

  1. 保持する可用性グループのプライマリ レプリカをサーバー インスタンスがホスト中の場合は、同期されたセカンダリ レプリカに可用性グループを手動でフェールオーバーすることをお勧めします (可能な場合)。 詳細については、「可用性グループの計画的な手動フェールオーバーの実行 (SQL Server)」を参照してください。

  2. ローカル セカンダリ レプリカをすべて削除します。 詳細については、「可用性グループからのセカンダリ レプリカの削除 (SQL Server)」を参照してください。

SQL Server 構成マネージャーの使用

AlwaysOn を無効にするには

  1. Always On 可用性グループを無効にする SQL Server インスタンスをホストする Windows Server フェールオーバー クラスター (WSFC) ノードに接続します。

  2. [スタート] メニューで、[すべてのプログラム][Microsoft SQL Server][構成ツール] の順にポイントして、[SQL Server 構成マネージャー] をクリックします。

  3. SQL Server 構成マネージャーで、[SQL Server のサービス] をクリックし、SQL Server (<インスタンス名>) を右クリックして、[プロパティ] をクリックします。ここで、<インスタンス名> は、Always On 可用性グループを無効にするローカル サーバー インスタンスの名前です。

  4. [Always On 高可用性] タブで、 [Always On 可用性グループを有効にする] チェック ボックスをオフにし、 [OK] をクリックします。

    SQL Server 構成マネージャーによって変更内容が保存され、SQL Server サービスが再起動されます。 SQL Server サービスが再起動すると、Always On が無効になり、IsHadrEnabled サーバー プロパティは、Always On 可用性グループが無効であることを示す 0 に設定されます。

  5. このトピックの「 補足情報: Always On を無効にした後」を読むことをお勧めします。

SQL Server PowerShell の使用

AlwaysOn を無効にするには

  1. ディレクトリ変更コマンド (cd) を使用して、AlwaysOn 可用性グループを無効にするサーバー インスタンスに移動します。

  2. AlwaysOn 可用性グループを無効にするには、Disable-SqlAlwaysOn コマンドレットを使用します。

    たとえば、次のコマンドは、SQL Server インスタンス (Computer\Instance) の AlwaysOn 可用性グループを無効にします。 このコマンドの場合、インスタンスを再起動する必要があり、再起動するかどうかを確認するメッセージが表示されます。

    Disable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance  
    

    重要

    Disable-SqlAlwaysOn コマンドレットによって SQL Server サービスを再起動するかどうかを制御する方法については、このトピックで後述する「SQL Server サービスがコマンドレットによって再起動される条件」を参照してください。

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

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

補足情報: AlwaysOn を無効にした後

Always On 可用性グループを無効にした後、SQL Server のインスタンスを再起動する必要があります。 サーバー インスタンスは、SQL 構成マネージャーによって自動的に再起動されます。 ただし、Disable-SqlAlwaysOn コマンドレットを使用した場合は、サーバー インスタンスを手動で再起動する必要があります。 詳細については、「 sqlservr Application」を参照してください。

再起動後のサーバー インスタンスに該当する状況を以下に示します。

  • SQL Server の起動時に可用性データベースは開始されず、アクセス不能となります。

  • サポートされる Always On Transact-SQL ステートメントは DROP AVAILABILITY GROUP のみです。 CREATE AVAILABILITY GROUP と ALTER AVAILABILITY GROUP、および ALTER DATABASE の SET HADR オプションはサポートされません。

  • Always On 可用性グループを無効にしても、WSFC 内の SQL Server メタデータと Always On 可用性グループの構成データに影響が及ぶことはありません。

1 つまたは複数の可用性グループの可用性レプリカをホストするすべてのサーバー インスタンスで AlwaysOn 可用性グループを永続的に無効にする場合は、次の手順を完了することをお勧めします。

  1. AlwaysOn を無効にする前にローカル可用性レプリカを削除しなかった場合は、サーバー インスタンスが可用性レプリカをホストしている可用性グループを削除します。 可用性グループの削除については、「可用性グループの削除 (SQL Server)」を参照してください。

  2. 残されたメタデータを除去するには、元の WSFC の一部であるサーバー インスタンスから影響を受ける可用性グループをそれぞれ削除します。

  3. プライマリ データベースには引き続きすべての接続からアクセスできますが、プライマリ データベースとセカンダリ データベース間のデータの同期は中止されます。

  4. セカンダリ データベースは、RESTORING 状態に入ります。 これらは削除するか、RESTORE WITH RECOVERY を使用して復元できます。 ただし、復元されたデータベースは、それ以降、可用性グループのデータの同期対象とはなりません。

SQL Server サービスがコマンドレットによって再起動される条件

現在実行中のサーバー インスタンスで、Enable-SqlAlwaysOn または Disable-SqlAlwaysOn を使用して現在の AlwaysOn 設定を変更すると、SQL Server サービスが再起動されます。 再起動の動作は次の条件によって異なります。

-NoServiceRestart パラメーターの指定 -Force パラメーターの指定 SQL Server サービスは再起動されるか?
いいえ いいえ 既定では再起動されます。 ただし、次のプロンプトが表示されます。

このアクションを完了するには、サーバー インスタンス '<instance_name>' の SQL Server サービスを再起動する必要があります。 Do you want to continue? (続行してもよろしいですか?)

[Y] はい [N] いいえ [S] 中断 [?] ヘルプ (既定値は "Y"):

N または Sを指定した場合、サービスは再起動されません。
いいえ はい サービスは再起動されます。
はい いいえ サービスは再起動されません。
はい はい サービスは再起動されません。

参照

Always On 可用性グループの概要 (SQL Server)
SERVERPROPERTY (Transact-SQL)