次の方法で共有


可用性データベースの中断 (SQL Server)

SQL Server 2012 で SQL Server Management Studio、Transact-SQL、または PowerShell を使用して、AlwaysOn 可用性グループ の可用性データベースを中断できます。 中断コマンドは、中断または再開するデータベースをホストするサーバー インスタンス上で実行する必要があります。

中断コマンドの効果は、次のように、中断するのがセカンダリ データベースかプライマリ データベースかによって異なります。

中断されたデータベース

中断コマンドの影響

[セカンダリ データベース]

ローカルのセカンダリ データベースのみが中断され、同期の状態は NOT SYNCHRONIZING になります。 他のセカンダリ データベースは影響を受けません。 中断されたデータベースはデータ (ログ レコード) を受信および適用しなくなり、プライマリ データベースと同期されなくなります。 読み取り可能なセカンダリ上の既存の接続は、引き続き使用できます。 読み取り可能なセカンダリ上で中断されたデータベースに対する新しい接続は、データ移動が再開されるまでは許可されません。

プライマリ データベースは使用可能です。 対応する各セカンダリ データベースを中断した場合、プライマリ データベースは公開された状態で実行されます。

重要な注意事項重要

セカンダリ データベースが中断されている間、対応するプライマリ データベースの送信キューが未送信トランザクション ログ レコードに蓄積されます。 セカンダリ レプリカへの接続では、データ移動が中断されたときに使用可能であったデータが返されます。

プライマリ データベース

プライマリ データベースは、接続されているすべてのセカンダリ データベースへのデータ移動を停止します。 プライマリ データベースは、公開モードで実行を継続します。 クライアントはプライマリ データベースを使用でき、読み取り可能なセカンダリ上の既存の接続は引き続き使用でき、新しい接続も確立できます。

注意

AlwaysOn セカンダリ データベースの中断が、プライマリ データベースの可用性に直接影響することはありません。 ただし、セカンダリ データベースを中断すると、プライマリ データベースの冗長性とフェールオーバー機能に影響する場合があります。 ミラーリングの場合はこれと異なり、ミラーリングの状態はミラー データベースでもプリンシパル データベースでも中断になります。 AlwaysOn プライマリ データベースを中断すると、対応するすべてのセカンダリ データベースでデータ移動が中断され、そのデータベースの冗長性とフェールオーバー機能はプライマリ データベースが再開されるまで停止されます。

  • 作業を開始する準備:

    制限事項と制約事項

    前提条件

    推奨事項

    セキュリティ

  • データベースを中断するために使用するもの:  

  • SQL Server Management Studio

    Transact-SQL

    PowerShell

  • 補足情報:  トランザクション ログがいっぱいになった状態の回避

  • 関連タスク

作業を開始する準備

制限事項と制約事項

SUSPEND コマンドは、対象のデータベースをホストするレプリカがコマンドを受け入れた直後に戻りますが、実際にはデータベースの中断が非同期に行われます。

前提条件

中断するデータベースをホストするサーバー インスタンスに接続している必要があります。 プライマリ データベースとそれに対応するセカンダリ データベースを中断するには、プライマリ レプリカをホストするサーバー インスタンスに接続します。 プライマリ データベースを使用可能な状態で維持したままセカンダリ データベースを中断するには、セカンダリ レプリカに接続します。

推奨事項

ボトルネックの発生中、1 つ以上のセカンダリ データベースを短時間中断すると、プライマリ レプリカのパフォーマンスが一時的に高まる効果が見込めます。 セカンダリ データベースが中断している間、対応するプライマリ データベースのトランザクション ログを切り捨てることはできません。 これにより、プライマリ データベースでログ レコードが蓄積されます。 そのため、中断したセカンダリ データベースをすぐに再開または削除することをお勧めします。 詳細については、このトピックの「補足情報: トランザクション ログがいっぱいになった状態の回避」を参照してください。

セキュリティ

権限

データベースに対する ALTER 権限が必要です。

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

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

SQL Server Management Studio の使用

データベースを中断するには

  1. オブジェクト エクスプローラーで、データベースを中断する可用性レプリカをホストするサーバー インスタンスに接続し、サーバー ツリーを展開します。 詳細については、このトピックの「前提条件」を参照してください。

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

  3. 可用性グループを展開します。

  4. [可用性データベース] ノードを展開し、データベースを右クリックして、[データ移動の中断] をクリックします。

  5. [データ移動の中断] ダイアログ ボックスで、[OK] をクリックします。

    オブジェクト エクスプローラーで、データベース アイコンに中断インジケーターが表示され、データベースが中断されていることが示されます。

注意

このレプリカの場所で他のデータベースを中断するには、データベースごとに手順 4. と手順 5. を繰り返します。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

Transact-SQL の使用

データベースを中断するには

  1. 中断するデータベースのレプリカをホストするサーバー インスタンスに接続します。 詳細については、このトピックの「前提条件」を参照してください。

  2. 次の ALTER DATABASE ステートメントを使用して、データベースを中断します。

    ALTER DATABASE database_name SET HADR SUSPEND

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

PowerShell の使用

データベースを中断するには

  1. ディレクトリ (cd) を、中断するデータベースのレプリカをホストするサーバー インスタンスに変更します。 詳細については、このトピックの「前提条件」を参照してください。

  2. Suspend-SqlAvailabilityDatabase コマンドレットを使用して可用性グループを中断します。

    たとえば、次のコマンドでは、Computer\Instance という名前のサーバー インスタンス上の可用性グループ MyAg に含まれている可用性データベース MyDb3 のデータの同期を中断します。

    Suspend-SqlAvailabilityDatabase ` 
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
    
    注意

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

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

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

補足情報: トランザクション ログがいっぱいになった状態の回避

通常、データベースで自動チェックポイントが実行されている場合は、次のログ バックアップの後、そのチェックポイントまでトランザクション ログが切り捨てられます。 ただし、セカンダリ データベースを中断している間、現在のすべてのログ レコードは、プライマリ データベースでアクティブのままになります。 最大サイズに到達したか、サーバー インスタンスの領域が不足して、トランザクション ログがいっぱいになると、データベースではそれ以上の更新を実行できません。

この問題を回避するには、次のいずれかの操作を実行する必要があります。

満杯になったトランザクション ログのトラブルシューティング

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

関連タスク

関連項目

概念

AlwaysOn 可用性グループの概要 (SQL Server)

可用性データベースの再開 (SQL Server)