ALTER DATABASE (Transact-SQL) SET HADRALTER DATABASE (Transact-SQL) SET HADR

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックには、セカンダリ データベースで Always On 可用性グループAlways On availability groups オプションを設定するための ALTER DATABASE 構文が含まれています。This topic contains the ALTER DATABASE syntax for setting Always On 可用性グループAlways On availability groups options on a secondary database. ALTER DATABASE ステートメントごとに SET HADR オプションが 1 つだけ許可されます。Only one SET HADR option is permitted per ALTER DATABASE statement. これらのオプションは、セカンダリ レプリカ上でのみサポートされます。These options are supported only on secondary replicas.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
ALTER DATABASE database_name  
   SET HADR   
   {  
        { AVAILABILITY GROUP = group_name | OFF }  
   | { SUSPEND | RESUME }  
   }  
[;]  

引数Arguments

database_namedatabase_name
変更するセカンダリ データベースの名前です。Is the name of the secondary database to be modified.

SET HADRSET HADR
指定したデータベース上で指定した Always On 可用性グループAlways On availability groups コマンドを実行します。Executes the specified Always On 可用性グループAlways On availability groups command on the specified database.

{ AVAILABILITY GROUP = group_name | OFF }{ AVAILABILITY GROUP =group_name | OFF }
次のように、指定した可用性グループから可用性データベースを削除するか、指定した可用性グループに参加させます。Joins or removes the availability database from the specified availability group, as follows:

group_namegroup_name
指定したデータベースをセカンダリ レプリカ上で参加させます。このレプリカは、group_name で指定された可用性グループに対してコマンドを実行するサーバー インスタンスによってホストされています。Joins the specified database on the secondary replica that is hosted by the server instance on which you execute the command to the availability group specified by group_name.

この操作の前提条件は以下のとおりです。The prerequisites for this operation are as follows:

  • データベースは既にプライマリ レプリカ上の可用性グループに追加されている必要があります。The database must already have been added to the availability group on the primary replica.

  • プライマリ レプリカがアクティブになっている必要があります。The primary replica must be active. 非アクティブなプライマリ レプリカのトラブルシューティング方法の詳細については、「AlwaysOn 可用性グループの構成のトラブルシューティング (SQL Server)」を参照してください。For information about how troubleshoot an inactive primary replica, see Troubleshooting Always On Availability Groups Configuration (SQL Server).

  • プライマリ レプリカがオンラインになっており、セカンダリ レプリカがプライマリ レプリカに接続されている必要があります。The primary replica must be online, and the secondary replica must be connected to the primary replica.

  • セカンダリ データベースは、プライマリ データベースの最新のデータベースとログ バックアップから WITH NORECOVERY を使用して復元されている必要があります。これは、セカンダリ データベースがプライマリ データベースからの遅れを取り戻せるように最新のログ バックアップで終わっている必要があります。The secondary database must have been restored using WITH NORECOVERY from recent database and log backups of the primary database, ending with a log backup that is recent enough to permit the secondary database to catch up to the primary database.

    注意

    データベースを可用性グループに追加するには、プライマリ レプリカをホストするサーバー インスタンスに接続し、ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name ステートメントを使用します。To add a database to the availability group, connect to the server instance that hosts the primary replica, and use the ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name statement.

詳細については、「 可用性グループへのセカンダリ データベースの参加 (SQL Server)のインスタンスに AlwaysOn 可用性グループを作成する方法について説明します。For more information, see Join a Secondary Database to an Availability Group (SQL Server).

OFFOFF
指定したセカンダリ データベースを可用性グループから削除します。Removes the specified secondary database from the availability group.

セカンダリ データベースがプライマリ データベースから大幅に遅れており、セカンダリ データベースが遅れを取り戻すまで待てない場合は、セカンダリ データベースを削除することをお勧めします。Removing a secondary database can be useful if it has fallen far behind the primary database, and you do not want to wait for the secondary database to catch up. セカンダリ データベースを削除した後、最新のログ バックアップで終わる一連のバックアップを復元することで、セカンダリ データベースを更新できます (次の構文を使用: RESTORE ...WITH NORECOVERY)。After removing the secondary database, you can update it by restoring a sequence of backups ending with a recent log backup (using RESTORE ... WITH NORECOVERY).

重要

可用性グループから可用性データベースを完全に削除するには、プライマリ可用性レプリカをホストするサーバー インスタンスに接続し、ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name ステートメントを使用します。To completely remove an availability database from an availability group, connect to the server instance that hosts the primary replica, and use the ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name statement. 詳細については、「可用性グループからのプライマリ データベースの削除 (SQL Server)」をご覧ください。For more information, see Remove a Primary Database from an Availability Group (SQL Server).

SUSPENDSUSPEND
セカンダリ データベース上でデータ移動を中断します。Suspends data movement on a secondary database. SUSPEND コマンドは、対象のデータベースをホストするレプリカによって受け付けられるとすぐに戻りますが、実際にはデータベースの中断が非同期に行われます。A SUSPEND command returns as soon as it has been accepted by the replica that hosts the target database, but actually suspending the database occurs asynchronously.

その影響の範囲は、ALTER DATABASE ステートメントを実行する場所によって異なります。The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • セカンダリ レプリカ上のセカンダリ データベースを中断した場合、ローカルのセカンダリ データベースのみが中断されます。If you suspend a secondary database on a secondary replica, only the local secondary database is suspended. 読み取り可能なセカンダリ上の既存の接続は、引き続き使用できます。Existing connections on the readable secondary remain usable. 読み取り可能なセカンダリ上で中断されたデータベースに対する新しい接続は、データ移動が再開されるまでは許可されません。New connections to the suspended database on the readable secondary are not allowed until data movement is resumed.

  • プライマリ レプリカ上のデータベースを中断した場合、すべてのセカンダリ レプリカ上の対応するセカンダリ データベースへのデータ移動が中断されます。If you suspend a database on the primary replica, data movement is suspended to the corresponding secondary databases on every secondary replica. 読み取り可能なセカンダリの既存の接続は引き続き利用できます。新しい読み取り目的の接続は、読み取り可能なセカンダリ レプリカに接続しません。Existing connections on a readable secondary remain usable, and new read-intent connections will not connect to readable secondary replicas.

  • データ移動が強制的な手動フェールオーバーによって中断された場合、新しいセカンダリ レプリカへの接続は、データ移動が中断している間は許可されません。When data movement is suspended due to a forced manual failover, connections to the new secondary replica are not allowed while data movement is suspended.

セカンダリ レプリカ上のデータベースを中断した場合、データベースとレプリカは同期されなくなり、NOT SYNCHRONIZED とマークされます。When a database on a secondary replica is suspended, both the database and replica become unsynchronized and are marked as NOT SYNCHRONIZED.

重要

セカンダリ データベースが中断されている間、対応するプライマリ データベースの送信キューが未送信トランザクション ログ レコードに蓄積されます。While a secondary database is suspended, the send queue of the corresponding primary database will accumulate unsent transaction log records. セカンダリ レプリカへの接続では、データ移動が中断されたときに使用可能であったデータが返されます。Connections to the secondary replica return data that was available at the time the data movement was suspended.

注意

AlwaysOn セカンダリ データベースの中断と再開は、プライマリ データベースの可用性に直接は影響しませんが、セカンダリ データベースの中断から再開までに、プライマリ データベースの冗長性とフェールオーバー機能に影響する場合があります。Suspending and resuming an Always On secondary database does not directly affect the availability of the primary database, though suspending a secondary database can impact redundancy and failover capabilities for the primary database, until the suspended secondary database is resumed. ミラーリングの場合はこれと異なり、ミラーリングが再開されるまで、ミラーリングの状態はミラー データベースでもプリンシパル データベースでも中断になります。This is in contrast to database mirroring, where the mirroring state is suspended on both the mirror database and the principal database until mirroring is resumed. Always On プライマリ データベースを中断すると、対応するすべてのセカンダリ データベースでデータ移動が中断され、そのデータベースの冗長性とフェールオーバー機能はプライマリ データベースが再開されるまで停止されます。Suspending an Always On primary database suspends data movement on all the corresponding secondary databases, and redundancy and failover capabilities cease for that database until the primary database is resumed.

詳細については、「可用性データベースの中断 (SQL Server)」を参照してください。For more information, see Suspend an Availability Database (SQL Server).

RESUMERESUME
指定したセカンダリ データベース上で中断されたデータ移動を再開します。Resumes suspended data movement on the specified secondary database. RESUME コマンドは、対象のデータベースをホストするレプリカによって受け付けられるとすぐに戻りますが、実際にはデータベースの再開が非同期に行われます。A RESUME command returns as soon as it has been accepted by the replica that hosts the target database, but actually resuming the database occurs asynchronously.

その影響の範囲は、ALTER DATABASE ステートメントを実行する場所によって異なります。The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • セカンダリ レプリカ上のセカンダリ データベースを再開した場合、ローカルのセカンダリ データベースのみが再開されます。If you resume a secondary database on a secondary replica, only the local secondary database is resumed. データ移動は、データベースがプライマリ レプリカでも中断されている場合を除き、再開されます。Data movement is resumed unless the database has also been suspended on the primary replica.

  • プライマリ レプリカ上のデータベースを再開した場合、対応するセカンダリ データベースがローカルに中断されていないすべてのセカンダリ レプリカへのデータ移動が再開されます。If you resume a database on the primary replica, data movement is resumed to every secondary replica on which the corresponding secondary database has not also been suspended locally. セカンダリ レプリカ上で個別に中断されたセカンダリ データベースを再開するには、セカンダリ レプリカをホストするサーバー インスタンスに接続し、そこでデータベースを再開します。To resume a secondary database that was individually suspended on a secondary replica, connect to the server instance that hosts the secondary replica and resume the database there.

    同期コミット モードでは、データベースの状態が SYNCHRONIZING に変わります。Under synchronous-commit mode, the database state changes to SYNCHRONIZING. 他のデータベースが現在中断されていない場合は、レプリカの状態も SYNCHRONIZING に変わります。If no other database is currently suspended, the replica state also changes to SYNCHRONIZING.

    詳細については、このトピックの「 可用性データベースの再開 (SQL Server)の可用性データベースを中断できます。For more information, see Resume an Availability Database (SQL Server).

データベースの状態Database States

セカンダリ データベースを可用性グループに参加させると、ローカル セカンダリ レプリカのセカンダリ データベースの状態が RESTORING から ONLINE に変わります。When a secondary database is joined to an availability group, the local secondary replica changes the state of that secondary database from RESTORING to ONLINE. セカンダリ データベースを可用性グループから削除すると、その状態はローカル セカンダリ レプリカによって RESTORING に戻ります。If a secondary database is removed from the availability group, it is set back to the RESTORING state by the local secondary replica. これにより、プライマリ データベースからの後続のログ バックアップをそのセカンダリ データベースに適用できます。This allows you to apply subsequent log backups from the primary database to that secondary database.

制限Restrictions

トランザクションとバッチの外で ALTER DATABASE ステートメントを実行します。Execute ALTER DATABASE statements outside of both transactions and batches.

SecuritySecurity

アクセス許可Permissions

データベースに対する ALTER 権限が必要です。Requires ALTER permission on the database. データベースを可用性グループに参加させるには、db_owner 固定データベース ロールのメンバーシップが必要です。Joining a database to an availability group requires membership in the db_owner fixed database role.

使用例Examples

次の例では、セカンダリ データベース AccountsDb1 を、AccountsAG 可用性グループのローカル セカンダリ レプリカに参加させます。The following example joins the secondary database, AccountsDb1, to the local secondary replica of the AccountsAG availability group.

ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;  

注意

コンテキストで使用するこの Transact-SQLTransact-SQL ステートメントを確認するには、「可用性グループの作成 (Transact-SQL)」を参照してください。To see this Transact-SQLTransact-SQL statement used in context, see Create an Availability Group (Transact-SQL).

参照See Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL) ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL) CREATE AVAILABILITY GROUP (Transact-SQL)
AlwaysOn 可用性グループの概要 (SQL Server) AlwaysOn 可用性グループの構成のトラブルシューティング (SQL Server)Overview of AlwaysOn Availability Groups (SQL Server) Troubleshoot AlwaysOn Availability Groups Configuration (SQL Server)