データベース ミラーリングのログイン アカウントの設定

2 つのサーバー インスタンスがデータベース ミラーリング セッションで通信するには、各インスタンスのログイン アカウントがもう一方のインスタンスにアクセスできる必要があります。また、各ログイン アカウントには、他方のインスタンスのデータベース ミラーリング エンドポイントへの接続権限も必要です。このエンドポイントの詳細については、「データベース ミラーリング エンドポイント」を参照してください。

ユーザー ログインの作成

master システム データベースまたは msdb システム データベース内の情報は、ミラー化できません。したがって、すべてのデータベース ユーザーに対して役割の交代が有効に機能するためには、プリンシパル サーバー インスタンスに対する接続権限のあるユーザー ログインが、ミラー サーバー インスタンスにも存在している必要があります。

この要件による影響は、ミラーリング パートナーを同じドメイン ユーザー アカウントとして実行しているかどうかによって異なります。

  • パートナーを同じドメイン ユーザー アカウントで実行している場合は、両方の master データベースに正しいユーザー ログインが自動的に存在します。この場合は、データベースのセキュリティ構成が単純になるため、望ましいといえます。

  • 異なるユーザー アカウントとしてパートナー サーバー インスタンスを実行している場合は、プリンシパル サーバー インスタンスに対するユーザー ログインを、ミラー サーバー インスタンスに手動で再現する必要があります。役割の交代後、ユーザーが孤立しないようにするには、プリンシパル データベースとミラー データベースの両方で同じユーザー ログインのセットを定期的に管理する必要があります。ただし、役割の交代後、任意のユーザーが孤立した場合は、その時点でそのユーザーのログインを設定できます。

異なるアカウントのログインの作成

2 つのサーバー インスタンスが異なるアカウントで実行される場合、システム管理者は CREATE LOGIN Transact-SQL ステートメントを使用して、リモート インスタンスのスタートアップ サービス アカウント用にログインを作成する必要があります。このログインは、各サーバー インスタンスの master データベースの syslogins テーブルに作成します。詳細については、「CREATE LOGIN (Transact-SQL)」を参照してください。

重要な注意事項重要

ドメイン アカウント以外で SQL Server を実行する場合、証明書を使用する必要があります。詳細については、「データベース ミラーリングでの証明書の使用」を参照してください。

たとえば、loginA で実行されるサーバー インスタンス sqlA の場合、loginB で実行されるサーバー インスタンス sqlB に接続するには、loginA が sqlB の syslogins テーブルに含まれている必要があり、loginB が sqlA の syslogins テーブルに含まれている必要があります。また、データベース ミラーリング セッションにミラーリング監視サーバー インスタンス (sqlC) が含まれ、3 つのサーバー インスタンスがそれぞれ異なるドメイン アカウントで実行される場合は、以下のログインを作成する必要があります。

インスタンス

ログインを作成し接続権限を許可する対象

sqlA

sqlB と sqlC

sqlB

sqlA と sqlC

sqlC

sqlA と sqlB

注意注意

ドメイン ユーザーではなくコンピュータ アカウントを使用することにより、ネットワーク サービス アカウントで接続できます。コンピュータ アカウントを使用する場合は、そのアカウントを他方のサーバー インスタンスにユーザーとして追加する必要があります。

接続権限の許可

サーバー インスタンスでログインを作成した後、サーバー インスタンスのデータベース ミラーリング エンドポイントに接続するための権限をそのログインに許可する必要があります。システム管理者は、GRANT Transact-SQL ステートメントを使用して接続権限を許可します。詳細については、「GRANT (Transact-SQL)」を参照してください。

注意注意

このエンドポイントの詳細については、「データベース ミラーリング エンドポイント」を参照してください。