次の方法で共有


データベース ミラーリングの設定のトラブルシューティング

更新 : 2008 年 11 月 17 日

ここでは、データベース ミラーリング セッションの設定時に発生する問題のトラブルシューティングに役立つ情報を提供します。

問題点 概要

アカウント

SQL Server を実行しているアカウントを適切に構成するための要件について説明します。

エンドポイント

各サーバー インスタンスのデータベース ミラーリング エンドポイントを適切に構成するための要件について説明します。

システム アドレス

データベース ミラーリング構成でサーバー インスタンスのシステム名を指定するためのその他の方法について概要を説明します。

ネットワーク アクセス

各サーバー インスタンスが他のサーバー インスタンスのポートに TCP 経由でアクセスできるという要件について説明します。

ミラー データベースの準備

ミラーリングを開始できるようにミラー データベースを準備する際の要件について概要を説明します。

失敗したファイル作成操作

失敗したファイル作成操作の対処方法について説明します。

ミラーリングの開始 (Transact-SQL)

ALTER DATABASE database_name SET PARTNER ='partner_server' ステートメントを実行する際に必要な順序について説明します。

アカウント

SQL Server の実行に使用するアカウントは、正しく構成されている必要があります。

  1. アカウントに適切な権限が与えられていることを確認します。
    1. アカウントが同じドメインで実行されている場合、アカウントの構成が不適切になる可能性は低くなります。
    2. アカウントが別のドメインで実行されているか、またはドメイン アカウントではない場合、もう一方のコンピュータの master データベースにアカウントのログインを作成する必要があります。また、そのログインには、エンドポイントに対して CONNECT 権限を与える必要があります。詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。これには、ネットワーク サービス アカウントも含まれます。
  2. SQL Server がローカル システム アカウントを使用しているサービスとして実行されている場合、認証には証明書を使用する必要があります。詳細については、「データベース ミラーリングでの証明書の使用」を参照してください。

エンドポイント

エンドポイントが正しく構成されている必要があります。

  1. 各サーバー インスタンス (プリンシパル サーバー、ミラー サーバー、およびミラーリング監視サーバー (存在する場合)) にデータベース ミラーリング エンドポイントがあることを確認します。詳細については、「sys.database_mirroring_endpoints (Transact-SQL)」を参照してください。また、認証の形式に応じて「Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)」または「データベース ミラーリングで発信接続に証明書を使用できるようにする方法 (Transact-SQL)」も参照してください。

  2. ポート番号が適切であることを確認します。
    サーバー インスタンスのデータベース ミラーリング エンドポイントに現在関連付けられているポートを識別するには、次の Transact-SQL ステートメントを使用します。

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. 説明が困難なデータベース ミラーリングのセットアップに関する問題については、各サーバー インスタンスを調査して、それぞれが正しいポートでリッスンしているかどうかを確認することをお勧めします。ポートの可用性の検証については、「MSSQLSERVER_1418」を参照してください。

  4. エンドポイントが開始されていること (STATE = STARTED) を確認します。各サーバー インスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    state_desc 列の詳細については、「sys.database_mirroring_endpoints (Transact-SQL)」を参照してください。
    エンドポイントを開始するには、次の Transact-SQL ステートメントを使用します。

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    詳細については、「ALTER ENDPOINT (Transact-SQL)」を参照してください。

  5. ROLE の設定が正しいことを確認します。各サーバー インスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT role FROM sys.database_mirroring_endpoints;
    GO
    

    詳細については、「sys.database_mirroring_endpoints (Transact-SQL)」を参照してください。

  6. 他のサーバーからのログインに、CONNECT 権限があることを確認します。あるエンドポイントに対して CONNECT 権限のあるユーザーを確認するには、各サーバー インスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    

システム アドレス

データベース ミラーリング構成におけるサーバー インスタンスのシステム名には、システムを明確に識別できる任意の名前を使用できます。サーバー アドレスには、システム名 (システムが同じドメインに存在する場合)、完全修飾ドメイン名、または IP アドレス (可能であれば静的 IP アドレス) を使用できます。完全修飾ドメイン名を使用すると動作が保証されます。詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。

ネットワーク アクセス

各サーバー インスタンスは、他のサーバー インスタンスのポートに TCP 経由でアクセスできる必要があります。これは、サーバー インスタンスが相互に信頼関係を持たない別のドメイン (信頼されていないドメイン) に存在する場合に特に重要になります。このような状況では、サーバー インスタンス間の通信の大半が制限されます。

ミラー データベースの準備

ミラーリングを初めて開始する場合も、ミラーリングを削除した後に再度開始する場合も、ミラー データベースがミラーリング用に準備されていることを確認します。

ミラー サーバーにミラー データベースを作成する際には、同じデータベース名と WITH NORECOVERY オプションを指定して、プリンシパル データベースのバックアップを復元する必要があります。また、このバックアップが実行された後で作成されたすべてのログ バックアップについても、WITH NORECOVERY を指定して適用する必要があります。

また、可能であれば、ミラー データベースのパス (ドライブ文字を含む) を、プリンシパル データベースと同一のパスにすることが推奨されています。ファイルのレイアウトが異なる場合、たとえば、プリンシパル データベースが "F:" ドライブに存在する一方で、ミラー システムには "F:" ドライブがない場合には、RESTORE ステートメントに MOVE オプションを含める必要があります。

ms189127.note(ja-jp,SQL.90).gif重要 :
ミラー データベースの作成時にデータベース ファイルを移動した場合、そのミラー データベースに後でファイルを追加する際に、ミラーリングの中断が必要になる場合があります。

データベース ミラーリングが停止している場合にミラーリングを再開するには、停止後にプリンシパル データベースで作成されたすべてのログ バックアップをミラー データベースに適用する必要があります。

詳細については、「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」を参照してください。

失敗したファイル作成操作

ミラーリング セッションに影響を与えずにファイルを追加するには、追加するファイルのパスが両方のサーバーに存在する必要があります。したがって、ミラー データベースの作成時にデータベース ファイルを移動した場合、その後のファイルの追加操作はミラー データベースで失敗し、ミラーリングが中断される可能性があります。

この問題を解決するには、次のいずれかを行います。

  1. データベースの所有者は、ミラーリング セッションを削除して、追加ファイルを含んでいるファイル グループの完全なバックアップを復元する必要があります。
  2. 所有者は、プリンシパル サーバーのファイルの追加操作を含んでいるログをバックアップし、WITH NORECOVERY オプションおよび WITH MOVE オプションを使用して、ミラー データベースにログのバックアップを手動で復元する必要があります。これにより、ミラー サーバーに指定されたファイル パスが作成され、その場所に新規ファイルが復元されます。
  3. 新しいミラーリング セッションのデータベースを準備するには、所有者は WITH NO RECOVERY を使用して、プリンシパル サーバーから他のアクティブなログ バックアップを復元することが必要です。

詳細については、「データベース ミラーリングの削除」、「ミラーリング用のミラー データベースを準備する方法 (Transact-SQL)」、「Windows 認証を使用してデータベース ミラーリング セッションを確立する方法 (Transact-SQL)」、「データベース ミラーリングでの証明書の使用」、または「データベース ミラーリング セッションを構成する方法 (SQL Server Management Studio)」を参照してください。

ミラーリングの開始 (Transact-SQL)

ALTER DATABASE database_name SET PARTNER ='partner_server' ステートメントを実行する際は、順序が非常に重要です。

  1. 最初のステートメントは、ミラー サーバーで実行する必要があります。このステートメントの実行時に、ミラー サーバーでは他のサーバー インスタンスへの接続は試行されません。ミラー サーバーは自身のデータベースに対し、プリンシパル サーバーからそのミラー サーバーへの接続が行われるまで待機するように指示します。
  2. 2 番目の ALTER DATABASE ステートメントはプリンシパル サーバーで実行する必要があります。このステートメントにより、プリンシパル サーバーはミラー サーバーへの接続を試みます。この接続が確立されると、ミラー サーバーは、さらに別の接続でプリンシパル サーバーへの接続を試みます。

詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

エラー メッセージ 1418

この SQL Server メッセージは、サーバー ネットワーク アドレスに到達できないか、そのアドレスが存在しないことを意味し、ネットワーク アドレス名を確認してコマンドを再実行するように示しています。詳細については、「MSSQLSERVER_1418」を参照してください。

複数データベースにまたがるトランザクション

データベースが自動フェールオーバーを伴う高い安全性モードでミラー化されている場合、自動フェールオーバーにより、状態が不明なトランザクションが自動的に解決されることがあります。ただし、この解決は不適切な場合があります。複数データベースにまたがるトランザクションがコミットされているときに、いずれかのデータベースで自動フェールオーバーが発生すると、データベース間で論理的な不一致が発生することがあります。

自動フェールオーバーの影響を受ける可能性がある、複数データベースにまたがるトランザクションには、次の種類があります。

  • 同じ SQL Server インスタンスで複数のデータベースを更新するトランザクション。
  • Microsoft 分散トランザクション コーディネータ (MS DTC) を使用するトランザクション。

詳細については、「データベース ミラーリングおよび複数データベースにまたがるトランザクション」を参照してください。

参照

処理手順

Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)

概念

データベース ミラーリング トランスポート セキュリティ

その他の技術情報

データベース ミラーリングの設定

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2008 年 11 月 17 日

変更内容 :
  • 「失敗したファイル作成操作」セクションを完全に変更しました。

2006 年 4 月 14 日

追加内容 :
  • ファイル作成操作に失敗したために中断されたセッションへの対処に関するセクションを追加しました。
  • 複数データベースにまたがるトランザクションに関するセクションを追加しました。
変更内容 :
  • 根本的な問題が解決されたので、「プリンシパルのログ ドライブの問題に対する応答」を削除しました。

2005 年 12 月 5 日

追加内容 :
  • エラー メッセージ 1418 の解釈
  • ポートの可用性の検証
変更内容 :
  • 完全修飾ドメイン名がパートナーまたはミラーリング監視のシステムを特定する唯一の方法であるという記述を削除しました。