Windows 認証を使用してデータベースのミラーリング監視を追加する方法 (Transact-SQL)

データベースのミラーリング監視を設定するには、データベース所有者が、データベース エンジンのインスタンスをミラーリング監視サーバーの役割に割り当てます。ミラーリング監視サーバーのインスタンスは、プリンシパル サーバーまたはミラー サーバーのインスタンスと同じコンピューターで実行できますが、このようにすると、自動フェールオーバーの堅牢性が大幅に低下します。

ミラーリング監視は独立したコンピューターに常駐させることを強くお勧めします。特定のサーバーを、同じパートナーまたは別のパートナーを含む複数の同時実行データベース ミラーリング セッションに参加させることができます。また、特定のサーバーを、あるセッションではパートナーとし、別のセッションではミラーリング監視にすることができます。

ミラーリング監視は、自動フェールオーバーを伴う高い安全性モードでの使用だけが想定されています。ミラーリング監視を設定する前に、SAFETY プロパティが現在 FULL に設定されていることを確認するよう強くお勧めします。

重要な注意事項重要

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

ミラーリング監視を確立するには

  1. ミラーリング監視サーバーのインスタンスで、データベース ミラーリングのエンドポイントが存在することを確認します。サポートされるミラーリング セッションの数に関係なく、サーバー インスタンスにはデータベース ミラーリング エンドポイントが 1 つだけ存在する必要があります。このサーバー インスタンスをデータベース ミラーリング セッションのミラーリング監視専用に使用する場合、ミラーリング監視の役割をエンドポイントに割り当てます (ROLE**=**WITNESS)。このサーバー インスタンスを 1 つ以上の他のデータベース ミラーリング セッションのパートナーとして使用する場合、エンドポイントの役割を ALL に割り当てます。

    SET WITNESS ステートメントを実行するには、データベース ミラーリング セッションが (パートナー間で) 既に開始されていて、ミラーリング監視のエンドポイントの STATE が STARTED に設定されている必要があります。

    ミラーリング監視サーバーのインスタンスにデータベース ミラーリング エンドポイントがあるかどうかを把握し、そのエンドポイントの役割と状態を把握するには、インスタンスで次の Transact-SQL ステートメントを使用します。

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

    データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。使用中のエンドポイントを削除すると、既存のセッションの接続が切断されます。セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリングのエンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。詳細については、「クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響」を参照してください。

    ミラーリング監視にエンドポイントが存在しない場合は、「Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)」を参照してください。

  2. パートナー インスタンスが異なるドメイン ユーザー アカウントで実行されている場合、各インスタンスの master データベースに別のアカウントのログインを作成します。詳細については、「Windows 認証を使用してデータベース ミラーリング ネットワーク アクセスを許可する方法 (Transact-SQL)」を参照してください。

  3. プリンシパル サーバーに接続し、次のステートメントを実行します。

    ALTER DATABASE <database_name> SET WITNESS =<server_network_address>

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

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

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

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

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

    ALTER DATABASE AdventureWorks2008R2 
      SET WITNESS = 'TCP://DBSERVER3:7022'
    
    ALTER DATABASE AdventureWorks2008R2 
      SET WITNESS = 'TCP://DBSERVER3:7022'
    

使用例

次の例では、データのミラーリング監視を確立します。ミラーリング監視サーバー インスタンス (WITNESSHOST4 の既定のインスタンス) で、次の手順を実行します。

  1. 7022 を使用する WITNESS の役割だけにこのサーバー インスタンスのエンドポイントを作成します。

    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=WITNESS)
    GO
    
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=WITNESS)
    GO
    
  2. パートナー インスタンスのドメイン ユーザー アカウントが異なる場合は、そのログインを作成します。たとえば、ミラーリング監視サーバーが SOMEDOMAIN\witnessuser で実行されていて、パートナーが MYDOMAIN\dbousername で実行されている場合などです。パートナーのログインを作成するには、以下のステートメントを実行します。

    --Create a login for the partner server instances,
    --which are both running as MYDOMAIN\dbousername:
    USE master ;
    GO
    CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ;
    GO
    --Grant connect permissions on endpoint to login account 
    --of partners
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername];
    GO
    
    --Create a login for the partner server instances,
    --which are both running as MYDOMAIN\dbousername:
    USE master ;
    GO
    CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ;
    GO
    --Grant connect permissions on endpoint to login account 
    --of partners
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername];
    GO
    
  3. 各パートナー サーバー インスタンスで、ミラーリング監視サーバー インスタンスのログインを作成します。

    --Create a login for the witness server instance,
    --which is running as SOMEDOMAIN\witnessuser:
    USE master ;
    GO
    CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ;
    GO
    --Grant connect permissions on endpoint to login account 
    --of partners
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser];
    GO
    
    --Create a login for the witness server instance,
    --which is running as SOMEDOMAIN\witnessuser:
    USE master ;
    GO
    CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ;
    GO
    --Grant connect permissions on endpoint to login account 
    --of partners
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser];
    GO
    
  4. プリンシパル サーバーで、ミラーリング監視サーバー (WITNESSHOST4) を設定します。

    ALTER DATABASE AdventureWorks2008R2 
        SET WITNESS = 
        'TCP://WITNESSHOST4:7022'
    GO
    
    ALTER DATABASE AdventureWorks2008R2 
        SET WITNESS = 
        'TCP://WITNESSHOST4:7022'
    GO
    
注意

サーバー ネットワーク アドレスは対象サーバー インスタンスを、インスタンスのミラーリング エンドポイントにマップされるポート番号で示します。

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