Windows 認証を使用してデータベース ミラーリング セッションを確立する方法 (Transact-SQL)

注意

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりにAlwaysOn 可用性グループを使用してください。

ミラー データベースを準備した後 (「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照)、データベース ミラーリング セッションを確立できます。 プリンシパル サーバー、ミラー サーバー、およびミラーリング監視サーバーのインスタンスは、別々のホスト システムにある別々のサーバー インスタンスでなければなりません。

重要な注意事項重要

ミラーリングの構成はパフォーマンスに影響する場合があるので、データベース ミラーリングの構成はピーク タイム以外の時間に行うことをお勧めします。

注意

特定のサーバー インスタンスを、同じパートナーまたは別のパートナーを含む複数の同時実行データベース ミラーリング セッションに参加させることができます。 また、サーバー インスタンスを、あるセッションではパートナーとし、別のセッションではミラーリング監視にすることができます。 ミラー サーバー インスタンスでは、プリンシパル サーバー インスタンスと同じエディションの SQL Server が実行されている必要があります。 データベース ミラーリングは、Microsoft SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションがサポートする機能」を参照してください。 また、ワークロードの処理能力が同程度のシステム上で運用することを強くお勧めします。

データベース ミラーリング セッションを確立するには

  1. ミラー データベースを作成します。 詳細については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。

  2. 各サーバー インスタンスにセキュリティを設定します。

    データベース ミラーリング セッションの各サーバー インスタンスには、データベース ミラーリング エンドポイントが必要です。 エンドポイントが存在しない場合は、作成する必要があります。

    注意

    サーバー インスタンスによりデータベースのミラーリングに使用される認証の形式は、データベース ミラーリング エンドポイントのプロパティで指定します。 データベース ミラーリングのトランスポートには、Windows 認証と証明書ベースの認証の 2 種類のセキュリティを使用できます。 詳細については、「データベース ミラーリングと AlwaysOn 可用性グループのトランスポート セキュリティ (SQL Server)」を参照してください。

    各パートナー サーバーで、データベース ミラーリング用のエンドポイントが存在していることを確認します。 サポートするミラーリング セッションの数にかかわらず、サーバー インスタンスではデータベース ミラーリング エンドポイントを 1 つしか持つことができません。 このサーバー インスタンスをデータベース ミラーリング セッションでパートナー専用に使用する場合は、パートナーのロールをエンドポイントに割り当てることができます (ROLE**=**PARTNER)。 また、このサーバーを他のデータベース ミラーリング セッションのミラーリング監視サーバーとしても使用する場合は、エンドポイントのロールを ALL として割り当てます。

    SET PARTNER ステートメントを実行するには、両方のパートナーのエンドポイントの STATE を STARTED に設定する必要があります。

    サーバー インスタンスにデータベース ミラーリング エンドポイントがあるかどうかを調べて、そのロールと状態を確認するには、そのインスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    重要な注意事項重要

    使用中のデータベース ミラーリング エンドポイントは再構成しないでください。 データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。 使用中のエンドポイントを削除すると、そのエンドポイントが再起動され、既存のセッションの接続が切断される場合があります。この場合、他のサーバー インスタンスからはエラーが発生したように見える可能性があります。 これは、自動フェールオーバーを伴う高い安全性モードでは特に重要です。この場合、パートナーでエンドポイントを再構成すると、フェールオーバーの原因になることがあります。 また、セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリング エンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。 詳細については、「クォーラム: データベースの可用性にミラーリング監視サーバーが与える影響 (データベース ミラーリング)」を参照してください。

    どのパートナーにもエンドポイントがない場合は、「Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)」を参照してください。

  3. サーバー インスタンスが別のドメイン ユーザー アカウントで実行されている場合、それぞれに他方のインスタンスの master データベースのログインが必要になります。 ログインが存在しない場合は、作成する必要があります。 詳細については、「Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)」を参照してください。

  4. プリンシパル サーバーをミラー データベースのパートナーとして設定するには、ミラー サーバーに接続し、次のステートメントを実行します。

    ALTER DATABASE <database_name> SET PARTNER = <server_network_address>

    <database_name> はミラー化するデータベースの名前 (両方のパートナーで同一の名前にします)、<server_network_address> はプリンシパル サーバーのサーバー ネットワーク アドレスです。

    サーバー ネットワーク アドレスの構文は次のとおりです。

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

    <system-address> は目的のコンピューター システムを明確に指定する文字列です。また、<port> はパートナー サーバー インスタンスのミラーリング エンドポイントが使用するポート番号です。 詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。

    たとえば、ミラーリング サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のプリンシパル サーバー インスタンスとしてパートナーを設定します。 データベース名は AdventureWorks、システムのアドレスは DBSERVER1 (パートナーのシステム名)、パートナーのデータベース ミラーリング エンドポイントが使用するポートは 7022 です。

    ALTER DATABASE AdventureWorks 
       SET PARTNER = 'TCP://DBSERVER1:7022'
    

    このステートメントを実行すると、プリンシパル サーバーからの接続時にミラー サーバーにセッションを確立する準備が整います。

  5. ミラー サーバーをプリンシパル データベースのパートナーとして設定するには、プリンシパル サーバーに接続し、次のステートメントを実行します。

    ALTER DATABASE <database_name> SET PARTNER = <server_network_address>

    詳細については、手順 4. を参照してください。

    たとえば、プリンシパル サーバー インスタンスで、次の ALTER DATABASE ステートメントは元のミラー サーバー インスタンスとしてパートナーを設定します。 データベース名は AdventureWorks、システムのアドレスは DBSERVER2 (パートナーのシステム名)、パートナーのデータベースのミラーリング エンドポイントが使用するポートは 7025 です。

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'
    

    プリンシパル サーバーでこのステートメントを入力すると、データベース ミラーリング セッションが開始されます。

  6. 既定ではセッションでのトランザクションの安全性が「完全」に設定され (SAFETY が FULL に設定された状態)、同期セッションが自動フェールオーバーを伴わない高い安全性モードで開始されます。 セッションは、次のように自動フェールオーバーを伴う高い安全性モードか、非同期の高パフォーマンス モードで実行するように再構成できます。

使用例

注意

次の例では、既存のミラー データベースのためにパートナー間にデータベース ミラーリング セッションを確立します。 ミラー データベースの作成については、「ミラーリングのためのミラー データベースの準備 (SQL Server)」を参照してください。

ミラーリング監視サーバーを使用せずにデータベース ミラーリング セッションを作成するための基本的な手順を示します。 2 つのパートナーは、2 台のコンピューター システムにある既定のサーバー インスタンスです (PARTNERHOST1 および PARTNERHOST5)。 2 つのパートナー インスタンスは、同一の Windows ドメイン ユーザー アカウント (MYDOMAIN\dbousername) で実行されます。

  1. プリンシパル サーバー インスタンス (PARTNERHOST1 の既定のインスタンス) で、ポート 7022 を使用するすべてのロールをサポートするエンドポイントを作成します。

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
    注意

    ログインの設定方法の例については、「Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)」を参照してください。

  2. ミラー サーバー インスタンス (PARTNERHOST5 の既定のインスタンス) で、ポート 7022 を使用するすべてのロールをサポートするエンドポイントを作成します。

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  3. プリンシパル サーバー インスタンス (PARTNERHOST1) で、データベースをバックアップします。

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. ミラー サーバー インスタンス (PARTNERHOST5) で、データベースを復元します。

    RESTORE DATABASE AdventureWorks 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. 完全データベース バックアップを作成した後、プリンシパル データベースでログ バックアップを作成する必要があります。 たとえば、次の Transact-SQL ステートメントは、前回の完全データベース バックアップで使用したものと同じファイルにログをバックアップします。

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. ミラーリングを開始する前に、必要なログ バックアップ (および、それ以降のログ バックアップ) を適用する必要があります。

    たとえば、次の Transact-SQL ステートメントは C:\AdventureWorks.bak から最初のログを復元します。

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\ AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. ミラー サーバー インスタンスで、PARTNERHOST1 のサーバー インスタンスをパートナーとして設定します (初期プリンシパル サーバーにします)。

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    重要な注意事項重要

    既定でデータベース ミラーリング セッションは、トランザクションの安全性が「完全」に設定された (SAFETY が FULL に設定された) 状態の同期モードで実行されます。 セッションを非同期の高パフォーマンス モードで実行するには、SAFETY を OFF にします。 詳細については、「データベース ミラーリングの動作モード」を参照してください。

  8. プリンシパル サーバー インスタンスで、PARTNERHOST5 のサーバー インスタンスをパートナーとして設定します (初期ミラー サーバーにします)。

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. 自動フェールオーバーを伴う高い安全性モードを使用する場合、必要に応じてミラーリング監視サーバー インスタンスを設定します。 詳細については、「Windows 認証の使用によるデータベースのミラーリング監視の追加 (Transact-SQL)」を参照してください。

注意

セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加を網羅した例については、「データベース ミラーリングの設定 (SQL Server)」を参照してください。

関連項目

タスク

Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)

参照

ALTER DATABASE (Transact-SQL)

概念

データベース ミラーリングの設定 (SQL Server)

ミラーリングのためのミラー データベースの準備 (SQL Server)

Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)

データベース ミラーリングとログ配布 (SQL Server)

データベース ミラーリング (SQL Server)

データベース ミラーリングとレプリケーション (SQL Server)

データベース ミラーリングの設定 (SQL Server)

サーバー ネットワーク アドレスの指定 (データベース ミラーリング)

データベース ミラーリングの動作モード