MSSQL_ENG018752
メッセージの詳細
製品名 |
SQL Server |
製品バージョン |
10.0 |
製品ビルド番号 |
|
イベント ID |
18752 |
イベント ソース |
MSSQLSERVER |
コンポーネント |
SQL Server データベース エンジン |
シンボル名 |
|
メッセージ テキスト |
同時にデータベースに接続できるログ リーダー エージェントまたはログ関連のプロシージャ (sp_repldone、sp_replcmds、および sp_replshowcmds) は 1 つだけです。ログ関連のプロシージャを実行した場合、そのプロシージャが実行された接続を削除するか、その接続に対して sp_replflush を実行してから、ログ リーダー エージェントを開始するか、別のログ関連のプロシージャを実行してください。 |
説明
複数の現在の接続が、sp_repldone、sp_replcmds、sp_replshowcmds のいずれかを実行しようとしています。ストアド プロシージャの sp_repldone (Transact-SQL) と sp_replcmds (Transact-SQL) は、パブリッシュされたデータベース内のレプリケートされたトランザクションに関する情報を検索および更新するために、ログ リーダー エージェントによって使用されるストアド プロシージャです。ストアド プロシージャの sp_replshowcmds (Transact-SQL) は、トランザクション レプリケーションに関する特定のタイプの問題点に対するトラブルシューティングを行うために使用されます。
このエラーは、次の状況で発生します。
パブリッシュされたデータベースのログ リーダー エージェントが実行されており、2 番目のログ リーダー エージェントの実行を同じデータベースに対して試みた場合、2 番目のエージェントに対してエラーが発生し、エージェント履歴に表示されます。
複数のエージェントが存在する状況では、いずれかのエージェントは孤立したプロセスが原因の可能性があります。
パブリッシュされたデータベースに対してログ リーダー エージェントが起動されており、ユーザーが sp_repldone、sp_replcmds、または sp_replshowcmds を同じデータベースに対して実行する場合は、ストアド プロシージャ (sqlcmd など) が実行されるとアプリケーションでエラーが発生します。
パブリッシュされたデータベースに対してログ リーダー エージェントが実行されておらず、ユーザーが sp_repldone、sp_replcmds、または sp_replshowcmds を実行してから、プロシージャを実行した接続を閉じない場合は、ログ リーダー エージェントによってデータベースへの接続が試行されるとエラーが発生します。
ユーザーの操作
次の手順を実行して、この問題に対するトラブルシューティングに役立てることができます。いずれかの手順によって、ログ リーダー エージェントをエラーを発生させないで起動できるようになった場合は、残りの手順を実行する必要はありません。
このエラーの発生原因となる可能性があるその他のエラーについて、ログ リーダー エージェントの履歴を確認します。レプリケーション モニタにおけるエージェントの状態およびエラーの詳細の表示については、「パブリケーションに関連付けられているエージェントの情報を表示したりタスクを実行する方法 (レプリケーション モニタ)」を参照してください。
パブリッシュされたデータベースに接続されている特定のプロセス識別番号 (SPID) に対応する sp_who (Transact-SQL) の出力を確認します。sp_repldone、sp_replcmds、または sp_replshowcmds を実行していた可能性のある接続をすべて閉じます。
ログ リーダー エージェントを再起動します。詳細については、「レプリケーション エージェントの起動および停止方法 (SQL Server Management Studio)」を参照してください。
ディストリビュータで SQL Server エージェント サービスを再起動します (クラスタ内でオフラインまたはオンラインにします)。スケジュールされたジョブがその他の SQL Server インスタンスから sp_repldone、sp_replcmds、または sp_replshowcmds を実行した可能性がある場合は、これらのインスタンスに対しても SQL Server エージェントを再起動します。詳細については、「SQL Server エージェント サービスの開始、停止、および一時停止」を参照してください。
パブリケーション データベース上のパブリッシャで sp_replflush (Transact-SQL) を実行してから、ログ リーダー エージェントを再起動します。
エラーの発生が継続する場合は、エージェントのログ記録を増やし、ログの出力ファイルを指定します。エラーのコンテキストによっては、エラーや他のエラー メッセージにつながる手順が示される可能性もあります。詳細については、「レプリケーション エージェント (トラブルシューティング)」を参照してください。