ALTER DATABASE (Transact-SQL) データベース ミラーリングALTER DATABASE (Transact-SQL) Database Mirroring

適用対象: ○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

注意

この機能はメンテナンス モードであり、Microsoft SQL Server の将来のバージョンで削除される可能性があります。This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature. 代わりに Always On 可用性グループAlways On availability groups を使用します。Use Always On 可用性グループAlways On availability groups instead.

データベースのデータベース ミラーリングを制御します。Controls database mirroring for a database. データベース ミラーリング オプションで指定した値は、データベースのコピーと、データベース ミラーリング セッション全体の両方に適用されます。Values specified with the database mirroring options apply to both copies of the database and to the database mirroring session as a whole. <database_mirroring_option> は、ALTER DATABASE ステートメントごとに 1 つだけ指定できます。Only one <database_mirroring_option> is permitted per ALTER DATABASE statement.

注意

構成はパフォーマンスに影響する場合があるので、データベース ミラーリングの構成はピーク タイム以外の時間に行うことをお勧めします。We recommend that you configure database mirroring during off-peak hours because configuration can affect performance.

ALTER DATABASE のオプションについては、ALTER DATABASE に関するページを参照してください。For ALTER DATABASE options, see ALTER DATABASE. ALTER DATABASE SET のオプションについては、ALTER DATABASE SET のオプションに関するページを参照してください。For ALTER DATABASE SET options, see ALTER DATABASE SET Options.

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

構文Syntax


ALTER DATABASE database_name
SET { <partner_option> | <witness_option> }
  <partner_option> ::=
    PARTNER { = 'partner_server'
            | FAILOVER
            | FORCE_SERVICE_ALLOW_DATA_LOSS
            | OFF
            | RESUME
            | SAFETY { FULL | OFF }
            | SUSPEND
            | TIMEOUT integer
            }
  <witness_option> ::=
    WITNESS { = 'witness_server'
            | OFF
            }
  

引数Arguments

重要

SET PARTNER または SET WITNESS コマンドは入力時には正常に完了できますが、後で失敗します。A SET PARTNER or SET WITNESS command can complete successfully when entered, but fail later.

注意

ALTER DATABASE データベース ミラーリング オプションは、包含データベースでは使用できません。ALTER DATABASE database mirroring options are not available for a contained database.

database_name: 変更するデータベースの名前です。database_name Is the name of the database to be modified.

PARTNER <partner_option>: データベース ミラーリング セッションのフェールオーバー パートナー、およびそれらの動作を定義する、データベース プロパティを制御します。PARTNER <partner_option> Controls the database properties that define the failover partners of a database mirroring session and their behavior. SET PARTNER オプションには、パートナーのうちのいずれか一方で設定すればよいものと、プリンシパル サーバーとミラー サーバーのいずれか一方に限定されているものがあります。Some SET PARTNER options can be set on either partner; others are restricted to the principal server or to the mirror server. 詳細については、後述の各 PARTNER オプションを参照してください。For more information, see the individual PARTNER options that follow. SET PARTNER 句は、それを指定したパートナーには関係なく、データベースの両方のコピーに影響します。A SET PARTNER clause affects both copies of the database, regardless of the partner on which it is specified.

SET PARTNER ステートメントを実行するには、両方のパートナーのエンドポイントの STATE が、STARTED に設定されている必要があります。To execute a SET PARTNER statement, the STATE of the endpoints of both partners must be set to STARTED. また、それぞれのパートナー サーバー インスタンスのデータベース ミラーリング エンドポイントの ROLE は、PARTNER または ALL のいずれかに設定されている必要があります。Note, also, that the ROLE of the database mirroring endpoint of each partner server instance must be set to either PARTNER or ALL. エンドポイントの指定方法については、Windows 認証でのデータベース ミラーリング エンドポイントの作成に関するページを参照してください。For information about how to specify an endpoint, see Create a Database Mirroring Endpoint for Windows Authentication. サーバー インスタンスのデータベース ミラーリング エンドポイントのロールおよび状態を確認するには、そのインスタンス上で、次の Transact-SQLTransact-SQL ステートメントを使用します。To learn the role and state of the database mirroring endpoint of a server instance, on that instance, use the following Transact-SQLTransact-SQL statement:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

<partner_option> ::=<partner_option> ::=

注意

1 つの SET PARTNER 句で指定できる <partner_option> は 1 つだけです。Only one <partner_option> is permitted per SET PARTNER clause.

' partner_server ' : SQL ServerSQL Server のインスタンスのサーバー ネットワーク アドレスが、新しいデータベース ミラーリング セッションでフェールオーバー パートナーとして動作することを指定します。' partner_server ' Specifies the server network address of an instance of SQL ServerSQL Server to act as a failover partner in a new database mirroring session. 各セッションには 2 つのパートナーが必要です。一方はプリンシパル サーバーとして起動し、他方はミラー サーバーとして起動します。Each session requires two partners: one starts as the principal server, and the other starts as the mirror server. これらのパートナーは、別々のコンピューター上に配置することをお勧めします。We recommend that these partners reside on different computers.

このオプションは、各パートナーでのセッションごとに 1 回指定します。This option is specified one time per session on each partner. データベース ミラーリング セッションを開始するには、2 つの ALTER DATABASE <データベース> SET PARTNER =' <パートナー サーバー> ' ステートメントが必要です。Initiating a database mirroring session requires two ALTER DATABASE database SET PARTNER ='partner_server' statements. これらのステートメントの順序は非常に重要です。Their order is significant. 最初に、ミラー サーバーに接続し、プリンシパル サーバー インスタンスを <パートナー サーバー> (SET PARTNER =' <プリンシパル サーバー> ' ) として指定します。First, connect to the mirror server, and specify the principal server instance as partner_server (SET PARTNER ='principal_server'). 次に、プリンシパル サーバーに接続し、ミラー サーバー インスタンスを <パートナー サーバー> (SET PARTNER =' <ミラー サーバー> ' ) として指定します。これにより、これら 2 つのパートナー間で、データベース ミラーリング セッションが開始されます。Second, connect to the principal server, and specify the mirror server instance as partner_server (SET PARTNER ='mirror_server'); this starts a database mirroring session between these two partners. 詳細については、データベース ミラーリングの設定に関するページを参照してください。For more information, see Setting Up Database Mirroring.

partner_server の値は、サーバー ネットワーク アドレスです。The value of partner_server is a server network address. 構文は次のとおりです。This has the following syntax:

TCP :// <system-address> : <port>TCP ://<system-address>:<port>

パラメーターの説明where

  • <system-address> は、システム名、完全修飾ドメイン名、IP アドレスなどの文字列です。対象のコンピューター システムを一意に識別します。<system-address> is a string, such as a system name, a fully qualified domain name, or an IP address, that unambiguously identifies the destination computer system.
  • <port> は、パートナー サーバー インスタンスのミラーリング エンドポイントに関連付けられているポート番号です。<port> is a port number that is associated with the mirroring endpoint of the partner server instance.

詳細については、 サーバー ネットワーク アドレスの指定 - データベース ミラーリングに関するページを参照してください。For more information, see Specify a Server Network Address - Database Mirroring.

SET PARTNER =' <パートナー サーバー> ' 句の例を次に示します。The following example illustrates the SET PARTNER ='partner_server' clause:

'TCP://MYSERVER.mydomain.Adventure-Works.com:7777'

重要

SQL Server Management StudioSQL Server Management Studio ではなく ALTER DATABASE ステートメントを使用してセットアップしたセッションでは、トランザクションの安全性が既定の完全な安全性に設定され (SAFETY の値が FULL)、セッションは自動フェールオーバーを伴わない高い安全性モードで実行されます。If a session is set up by using the ALTER DATABASE statement instead of SQL Server Management StudioSQL Server Management Studio, the session is set to full transaction safety by default (SAFETY is set to FULL) and runs in high-safety mode without automatic failover. 自動フェールオーバーを使用するにはミラーリング監視を構成し、ハイパフォーマンス モードで実行するにはトランザクションの安全性をオフ (SAFETY OFF) にします。To allow automatic failover, configure a witness; to run in high-performance mode, turn off transaction safety (SAFETY OFF).

FAILOVER: プリンシパル サーバーをミラー サーバーに手動でフェールオーバーします。FAILOVER Manually fails over the principal server to the mirror server. FAILOVER は、プリンシパル サーバー上でのみ指定できます。You can specify FAILOVER only on the principal server. このオプションは、SAFETY が FULL に設定されている (既定) 場合にのみ有効です。This option is valid only when the SAFETY setting is FULL (the default).

FAILOVER オプションを指定する場合は、データベース コンテキストとして master が必要です。The FAILOVER option requires master as the database context.

FORCE_SERVICE_ALLOW_DATA_LOSS: データベースが非同期状態の場合、または同期状態で自動フェールオーバーが行われない場合、プリンシパル サーバーで障害が発生すると、ミラー データベースにデータベース サービスを強制します。FORCE_SERVICE_ALLOW_DATA_LOSS Forces database service to the mirror database after the principal server fails with the database in an unsynchronized state or in a synchronized state when automatic failover does not occur.

サービスの強制は、プリンシパル サーバーが停止した場合にのみ行うことを強くお勧めします。We strongly recommend that you force service only if the principal server is no longer running. それ以外の場合にサービスを強制すると、一部のクライアントが、新しいプリンシパル データベースではなく、元のプリンシパル データベースにアクセスし続ける可能性があります。Otherwise, some clients might continue to access the original principal database instead of the new principal database. FORCE_SERVICE_ALLOW_DATA_LOSS は、ミラー サーバー上でのみ使用可能で、かつ次の条件をすべて満たしている必要があります。FORCE_SERVICE_ALLOW_DATA_LOSS is available only on the mirror server and only under all the following conditions:

  • プリンシパル サーバーが停止している。The principal server is down.
  • WITNESS が OFF に設定されているか、または監視サーバーがミラー サーバーに接続されている。WITNESS is set to OFF or the witness is connected to the mirror server.

サービスの強制は、データベースにサービスを直ちに復元するために一部のデータが失われてもかまわないという場合にのみ行ってください。Force service only if you are willing to risk losing some data in order to restore service to the database immediately.

サービスを強制すると、セッションが中断され、元のプリンシパル データベース内のすべてのデータが一時的に保持されます。Forcing service suspends the session, temporarily preserving all the data in the original principal database. 元のプリンシパルが稼働し、新しいプリンシパル サーバーと通信できるようになると、データベース管理者はサービスを再開できます。Once the original principal is in service and able to communicate with the new principal server, the database administrator can resume service. セッションを再開すると、すべての未送信ログ レコードと、それに対応する更新は失われます。When the session resumes, any unsent log records and the corresponding updates are lost.

OFF: データベース ミラーリング セッションを削除し、データベースからミラーリングを削除します。OFF Removes a database mirroring session and removes mirroring from the database. OFF は、どちらのパートナー上でも指定できます。You can specify OFF on either partner. ミラーリングの削除による影響の詳細については、データベース ミラーリングの削除に関するページを参照してください。For information, see about the impact of removing mirroring, see Removing Database Mirroring.

RESUME: 中断状態のデータベース ミラーリング セッションを再開します。RESUME Resumes a suspended database mirroring session. RESUME は、プリンシパル サーバー上でのみ指定できます。You can specify RESUME only on the principal server.

SAFETY { FULL | OFF }: トランザクションの安全性のレベルを設定します。SAFETY { FULL | OFF } Sets the level of transaction safety. SAFETY は、プリンシパル サーバー上でのみ指定できます。You can specify SAFETY only on the principal server.

既定値は FULL です。The default is FULL. SAFETY が FULL の場合、データベース ミラーリング セッションは高い安全性モードで同期的に実行されます。With full safety, the database mirroring session runs synchronously (in high-safety mode). OFF の場合は、データベース ミラーリング セッションは高パフォーマンス モードで非同期的に実行されます。If SAFETY is set to OFF, the database mirroring session runs asynchronously (in high-performance mode).

高い安全性モードの動作は、次のように部分的にミラーリング監視に依存します。The behavior of high-safety mode depends partly on the witness, as follows:

  • SAFETY が FULL に設定され、ミラーリング監視がセッションに対して設定されている場合、セッションは自動フェールオーバーを伴う高い安全性モードで実行されます。When safety is set to FULL and a witness is set for the session, the session runs in high-safety mode with automatic failover. データベースが同期され、ミラー サーバー インスタンスとミラーリング監視が引き続き相互接続している場合 (つまりクォーラムを保持している場合)、プリンシパル サーバーが失われると、セッションでは自動的にフェールオーバーが発生します。When the principal server is lost, the session automatically fails over if the database is synchronized and the mirror server instance and witness are still connected to each other (that is, they have quorum). 詳細については、「クォーラム: データベースの可用性にミラーリング監視が与える影響 - データベース ミラーリングに関するページを参照してください。For more information, see Quorum: How a Witness Affects Database Availability - Database Mirroring.

    ミラーリング監視がセッションに対して設定されていても、ミラーリング監視サーバーが切断されていると、ミラー サーバーが利用できなくなるためプリンシパル サーバーがダウンします。If a witness is set for the session but is currently disconnected, the loss of the mirror server causes the principal server to go down.

  • SAFETY が FULL に設定され、ミラーリング監視が OFF に設定されている場合、セッションは自動フェールオーバーを伴わない高い安全性モードで実行されます。When safety is set to FULL and the witness is set to OFF, the session runs in high-safety mode without automatic failover. ミラー サーバー インスタンスがダウンしても、プリンシパル サーバー インスタンスは影響を受けません。If the mirror server instance goes down, the principal server instance is unaffected. プリンシパル サーバー インスタンスがダウンした場合、ミラー サーバー インスタンスにサービスの提供を強制的に移行できます (データが損失する可能性があります)。If the principal server instance goes down, you can force service (with possible data loss) to the mirror server instance.

  • SAFETY が OFF に設定されている場合、セッションはハイパフォーマンス モードで実行されます。この場合、自動フェールオーバーも手動フェールオーバーもサポートされません。If SAFETY is set to OFF, the session runs in high-performance mode, and automatic failover and manual failover are not supported. ただし、ミラー サーバーで発生した問題が、プリンシパル サーバーに影響を及ぼすことはありません。WITNESS が OFF に設定されているか、ミラーリング監視サーバーがミラーに現在接続されているときに、プリンシパル サーバー インスタンスがダウンした場合、必要に応じてミラー サーバー インスタンスにサービスの提供を強制的に移行できます (データが損失する可能性があります)。However, problems on the mirror do not affect the principal, and if the principal server instance goes down, you can, if necessary, force service (with possible data loss) to the mirror server instance-if WITNESS is set to OFF or the witness is currently connected to the mirror. サービスの強制の詳細については、前の「FORCE_SERVICE_ALLOW_DATA_LOSS」を参照してください。For more information on forcing service, see "FORCE_SERVICE_ALLOW_DATA_LOSS" earlier in this section.

重要

ハイパフォーマンス モードは、ミラーリング監視の使用を想定していません。High-performance mode is not intended to use a witness. ただし、SAFETY を OFF に設定した場合は常に、WITNESS も OFF に設定することを強くお勧めします。However, whenever you set SAFETY to OFF, we strongly recommend that you ensure that WITNESS is set to OFF.

SUSPEND: データベース ミラーリング セッションを一時停止します。SUSPEND Pauses a database mirroring session.

SUSPEND は、どちらのパートナー上でも指定できます。You can specify SUSPEND on either partner.

TIMEOUT integer: タイムアウト時間を秒単位で指定します。TIMEOUT integer Specifies the time-out period in seconds. タイムアウト時間は、ミラーリング セッションの別のインスタンスからの PING メッセージを受信するために、サーバー インスタンスが待機する最大時間です。この時間を過ぎると、その別のインスタンスは接続解除されたものと見なされます。The time-out period is the maximum time that a server instance waits to receive a PING message from another instance in the mirroring session before considering that other instance to be disconnected.

TIMEOUT オプションは、プリンシパル サーバー上でのみ指定できます。You can specify the TIMEOUT option only on the principal server. このオプションを指定しない場合、この時間は既定で 10 秒に設定されます。If you do not specify this option, by default, the time period is 10 seconds. 5 以上の値を指定すると、タイムアウト時間は指定した秒数に設定されます。If you specify 5 or greater, the time-out period is set to the specified number of seconds. タイムアウト値に 0 から 4 秒を指定すると、タイムアウト時間は自動的に 5 秒に設定されます。If you specify a time-out value of 0 to 4 seconds, the time-out period is automatically set to 5 seconds.

重要

タイムアウト期間を 10 秒以上にしておくことをお勧めします。We recommend that you keep the time-out period at 10 seconds or greater. 値を 10 秒未満に設定すると、負荷の高いシステムでは PING を受信できず、誤認エラーが示される可能性があります。Setting the value to less than 10 seconds creates the possibility of a heavily loaded system missing PINGs and declaring a false failure.

詳細については、「 データベース ミラーリング中に発生する可能性のあるエラー」を参照してください。For more information, see Possible Failures During Database Mirroring.

WITNESS <witness_option>: データベースのミラーリング監視を定義するデータベース プロパティを制御します。WITNESS <witness_option> Controls the database properties that define a database mirroring witness. SET WITNESS 句は、データベースの両方のコピーに影響しますが、SET WITNESS はプリンシパル サーバー上でのみ指定できます。A SET WITNESS clause affects both copies of the database, but you can specify SET WITNESS only on the principal server. ミラーリング監視がセッションに対して設定されている場合にデータベースを使用できるようにするには、SAFETY の設定に関係なく、クォーラムが必要です。詳細については、「クォーラム: データベースの可用性にミラーリング監視が与える影響 - データベース ミラーリングに関するページを参照してください。If a witness is set for a session, quorum is required to serve the database, regardless of the SAFETY setting; for more information, see Quorum: How a Witness Affects Database Availability - Database Mirroring.

ミラーリング監視とフェールオーバー パートナーは、別々のコンピューターに配置することをお勧めします。We recommend that the witness and failover partners reside on separate computers. ミラーリング監視サーバーの詳細については、「データベース ミラーリング監視サーバー」を参照してください。For information about the witness, see Database Mirroring Witness.

SET WITNESS ステートメントを実行するには、プリンシパル サーバー インスタンスおよびミラーリング監視サーバー インスタンスのエンドポイントの STATE が STARTED に設定されている必要があります。To execute a SET WITNESS statement, the STATE of the endpoints of both the principal and witness server instances must be set to STARTED. また、ミラーリング監視サーバー インスタンスのデータベース ミラーリング エンドポイントの ROLE は、WITNESS または ALL のいずれかに設定されている必要があります。Note, also, that the ROLE of the database mirroring endpoint of a witness server instance must be set to either WITNESS or ALL. エンドポイントの指定方法については、データベース ミラーリング エンドポイントに関するページを参照してください。For information about specifying an endpoint, see The Database Mirroring Endpoint.

サーバー インスタンスのデータベース ミラーリング エンドポイントのロールおよび状態を確認するには、そのインスタンス上で、次の Transact-SQLTransact-SQL ステートメントを使用します。To learn the role and state of the database mirroring endpoint of a server instance, on that instance, use the following Transact-SQLTransact-SQL statement:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

注意

データベースのプロパティは、ミラーリング監視では設定できません。Database properties cannot be set on the witness.

<witness_option> ::=<witness_option> ::=

注意

1 つの SET WITNESS 句で指定できる <witness_option> は 1 つだけです。Only one <witness_option> is permitted per SET WITNESS clause.

' witness_server ' : データベース エンジンDatabase Engineのインスタンスが、データベース ミラーリング セッションのミラーリング管理サーバーとして動作することを指定します。' witness_server ' Specifies an instance of the データベース エンジンDatabase Engine to act as the witness server for a database mirroring session. SET WITNESS ステートメントは、プリンシパル サーバー上でのみ指定できます。You can specify SET WITNESS statements only on the principal server.

SET WITNESS =' <ミラーリング監視サーバー> ' ステートメントでは、<ミラーリング監視サーバー> の構文は、<パートナー サーバー> の構文と同じです。In a SET WITNESS ='witness_server' statement, the syntax of witness_server is the same as the syntax of partner_server.

OFF: データベース ミラーリング セッションから、ミラーリング監視を削除します。OFF Removes the witness from a database mirroring session. ミラーリング監視を OFF に設定すると、自動フェールオーバーが無効化されます。Setting the witness to OFF disables automatic failover. データベースが FULL SAFETY に設定され、ミラーリング監視が OFF に設定されている場合、ミラー サーバーに障害が発生すると、プリンシパル サーバーはデータベースを使用不可にします。If the database is set to FULL SAFETY and the witness is set to OFF, a failure on the mirror server causes the principal server to make the database unavailable.

RemarksRemarks

使用例Examples

A.A. ミラーリング監視を使用したデータベース ミラーリング セッションを作成するCreating a database mirroring session with a witness

ミラーリング監視を使用したデータベース ミラーリングをセットアップするには、セキュリティを構成し、ミラー データベースを準備し、ALTER DATABASE を使用してパートナーを設定する必要があります。Setting up database mirroring with a witness requires configuring security and preparing the mirror database, and also using ALTER DATABASE to set the partners. 完全なセットアップ プロセスの例は、データベース ミラーリングの設定に関するページを参照してください。For an example of the complete setup process, see Setting Up Database Mirroring.

B.B. データベース ミラーリング セッションを手動でフェールオーバーするManually failing over a database mirroring session

手動フェールオーバーは、どちらのデータベース ミラーリング パートナーからでも開始できます。Manual failover can be initiated from either database mirroring partner. フェールオーバーする前に、現在プリンシパル サーバーであると思われるサーバーが、実際にプリンシパル サーバーであるかどうかを確認する必要があります。Before failing over, you should verify that the server you believe to be the current principal server actually is the principal server. たとえば、AdventureWorks2012AdventureWorks2012 データベースの場合、現在プリンシパル サーバーであると思われるサーバー インスタンスで、次のクエリを実行します。For example, for the AdventureWorks2012AdventureWorks2012 database, on that server instance that you think is the current principal server, execute the following query:

SELECT db.name, m.mirroring_role_desc
FROM sys.database_mirroring m
JOIN sys.databases db
ON db.database_id = m.database_id
WHERE db.name = N'AdventureWorks2012';
GO

そのサーバー インスタンスが実際にプリンシパルである場合、mirroring_role_desc の値は Principal になります。If the server instance is in fact the principal, the value of mirroring_role_desc is Principal. このサーバー インスタンスがミラー サーバーの場合には、SELECT ステートメントは Mirror を返します。If this server instance were the mirror server, the SELECT statement would return Mirror.

次の例では、そのサーバーが現在のプリンシパルであることを前提としています。The following example assumes that the server is the current principal.

  1. データベース ミラーリング パートナーに手動でフェールオーバーするには、次のステートメントを実行します。Manually fail over to the database mirroring partner:

    ALTER DATABASE AdventureWorks2012 SET PARTNER FAILOVER;
    GO
    
  2. 新しいミラーでのフェールオーバーの結果を確認するには、次のクエリを実行します。To verify the results of the failover on the new mirror, execute the following query:

    SELECT db.name, m.mirroring_role_desc
    FROM sys.database_mirroring m
    JOIN sys.databases db
    ON db.database_id = m.database_id
    WHERE db.name = N'AdventureWorks2012';
    GO
    

mirroring_role_desc の現在の値は、Mirror です。The current value of mirroring_role_desc is now Mirror.

参照See Also