役割の交代後のログインとジョブの管理 (SQL Server)

適用対象:SQL Server

SQL Server データベースの高可用性ソリューションまたは災害復旧ソリューションを展開する場合、master 内のデータベースまたは msdb データベースに格納されている関連情報を再現することが重要です。 通常、関連情報には、プライマリ/プリンシパル データベースのジョブおよびデータベースへの接続に必要なユーザーまたはプロセスのログインが含まれます。 セカンダリ/ミラー データベースをホストする SQL Server の任意のインスタンスでこの情報を複製する必要があります。 可能であれば、役割の交代後に、プログラムで新しいプライマリ/プリンシパル データベースに情報を再現することが最善の方法です。

Login

データベースのコピーをホストするすべてのサーバー インスタンスで、プリンシパル データベースにアクセスする権限を持つログインを再現する必要があります。 プライマリ/プリンシパルの役割が交代すると、新しいプリンシパル/プライマリ サーバー インスタンスにログインが存在するユーザーのみが新しいプリンシパル/プライマリ データベースにアクセスできます。 ログインが新しいプライマリ/プリンシパル サーバー インスタンスで定義されていないユーザーは孤立して、データベースにアクセスできません。

ユーザーが孤立している場合は、新しいプライマリ/プリンシパル サーバー インスタンスでログインを作成し、 sp_change_users_loginを実行します。 詳細については、「孤立したユーザーのトラブルシューティング (SQL Server)」を参照してください。

SQL Server 認証またはローカル Windows ログインを使用するアプリケーションのログイン

アプリケーションで SQL Server 認証またはローカル Windows ログインを使用している場合、SID が一致しないと、 SQL Serverのリモート インスタンスでアプリケーションのログインを解決できないことがあります。 SID が一致しないと、ログインはリモート サーバー インスタンスの孤立ユーザーになります。 この問題は、アプリケーションがフェールオーバー後にミラー化されたデータベースまたはログ配布データベース、またはバックアップから初期化されたレプリケーション サブスクライバー データベースに接続すると発生する可能性があります。

この問題を防ぐために、 SQL Serverのリモート インスタンスによってホストされているデータベースを使用するようにアプリケーションをセットアップする場合、予防策を講じることをお勧めします。 予報策として、 SQL Server のローカル インスタンスから SQL Serverのリモート インスタンスにログインとパスワードを転送する必要があります。 この問題を回避する方法の詳細については、サポート技術情報の記事 918992「SQL Server のインスタンス間でログインおよびパスワードを転送する方法」を参照してください。

Note

この問題は、さまざまなコンピューターの Windows ローカル アカウントに影響します。 ただし、各コンピューターの SID は同じであるため、この問題はドメイン アカウントでは発生しません。

詳細については、「 Orphaned Users with Database Mirroring and Log Shipping 」(データベース ミラーリングとログ配布での孤立ユーザー) (データベース エンジンのブログ) を参照してください。

ジョブ

バックアップ ジョブなどのジョブでは、特別な考慮が必要になります。 通常は、役割の交代後、データベース所有者またはシステム管理者が、新しいプライマリ/プリンシパル データベース用にジョブを再作成する必要があります。

元のプライマリ/プリンシパル サーバー インスタンスが使用できる場合は、 SQL Serverのそのインスタンスで元のジョブを削除する必要があります。 現在のミラー データベースのジョブは RESTORING 状態であるため失敗し、使用できなくなります。

Note

SQL Server の複数のインスタンスを、別のドライブ文字などを使用して別に構成できます。 パートナーごとのジョブは、このような違いを考慮する必要があります。

関連項目

データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理 (SQL Server)
孤立したユーザーのトラブルシューティング (SQL Server)