現象
レプリケーション ログ リーダー エージェントは、Microsoft SQL Server で失敗すると、SQL Server のログに次のようなエラー メッセージが表示されます。
< 時刻スタンプ > spid98 レプリケーション レプリケーション トランザクション ログ リーダー
サブシステム: エージェントの logreadername が失敗しました。プロセスは、'sp_replcmds' を実行できませんでした。
'< サーバー名 >' です。
< 時刻スタンプ > spid258 エラー: 14151、レベル: 18、状態: 1 です。
< 時刻スタンプ > spid258 レプリケーション レプリケーション トランザクション ログ リーダー
サブシステム: エージェントの logreadername が失敗しました。プロセスは、'sp_replcmds' を実行できませんでした。
'< サーバー名 >' です。
さらに、以下のような 1 つまたは複数のエラー メッセージが表示される場合があります。
-
18805/18836 のログ リーダーを構築できませんでしたコマンドをレプリケートします。
< 時刻スタンプ > 状態: 0、コード: 20011、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。
< 時刻 > のタイムスタンプ、プロセスは、[< サーバー名 >' の ' sp_replcmds' を実行できませんでした。
< 時刻スタンプ > 状態: 0 の場合、コード: 18836、テキスト: ' UpdateText のテキスト情報ブロックが無効な: -> GetType() を m_pHead: 1, m_TextDataType: 0、m_TextOpType: 3、ti: {RowsetId 7746362867712、{TextTimeStamp 480235880448、{{PageId 2680944、ファイル Id 1} の RowId、スロット Id 21}}、coloffset-1、textInfoFlags 0x4、textSize 177、177、oldSize newSize 0、0 のオフセット}.'。
< 時刻スタンプ > 状態: 0、コード: 18805、テキスト: 'ログリーダーは LSN {00150725:00014316:009 d} からレプリケートされたコマンドを作成できませんでした。' です。 < 時刻スタンプ > 状態: 0、コード: 22037、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。 -
18805/18836 のログ リーダーを構築できませんでしたコマンドをレプリケートします。
< 時刻スタンプ > 状態: 0、コード: 20011、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。
< 時刻 > のタイムスタンプ、プロセスは、[< サーバー名 >' の ' sp_replcmds' を実行できませんでした。
< 時刻スタンプ > 複製エージェントの状態: 6
< 時刻スタンプ > 状態: 0、コード: 18805、テキスト: '、ログ リーダー エージェントは、ログ シーケンス番号 (LSN) からのレプリケートされたコマンドを作成できませんでした {00033a89:0000969 c: 000a}。再びパブリケーション データベースをバックアップし、カスタマー サポート サービスにお問い合わせください。 ' です。
< 時刻スタンプ > 状態: 0、コード: 22037、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。 -
ログリーダーのタイムアウト
エージェントが実行されています。このエージェント セッションの詳細を表示するのにには、レプリケーション モニターを使用します。
複製エージェントの状態: 3
発行元: {(0x0000172a0002ac900001、0x0000172a0002ac900001、0, 0)、sp_repldone を呼び出して}
発行元: {sp_replcmds (500, 0) を呼び出します。
状態: 2、コード: 0 の場合、テキスト: 'プロセスを実行できませんでした '< 発行元名 >' の ' sp_replcmds' です。' です。
プロセスは、[< 発行元名 >' の ' sp_replcmds' を実行できませんでした。
複製エージェントの状態: 5
状態: 2、コード: 0 の場合、テキスト: 'タイムアウト' です。
[< 発行元名 >' のパブリッシャーから切断します。
'再試行' 状態で、エージェントが失敗しました。後でエージェントを実行しようとしてください。
-
アサーション
< 時刻スタンプ > 状態: 0、コード: 20011、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。
< 時刻 > のタイムスタンプ、プロセスは、[< サーバー名 >' の ' sp_replcmds' を実行できませんでした。
< 時刻スタンプ > 状態: 0、コード: 18773、テキスト: 'が見つかりませんでした"ClientPreferences"は、コマンドの構築時に ID 30 の列のテキスト情報レコード。' です。
< 時刻スタンプ > 状態: 0、コード: 3624、テキスト: ' システム アサーション チェックが失敗しました。詳細については、SQL Server エラー ログを確認してください。通常、アサーション エラーは、ソフトウェアのバグまたはデータの破損によって発生します。データベースの破損を確認するには、DBCC CHECKDB を実行して検討してください。場合はセットアップ中にダンプをマイクロソフトに送信するのには合意すると、ミニ ダンプがマイクロソフトに送信されます。更新プログラムは、マイクロソフトの最新の Service Pack またはテクニカル ・ サポートから QFE で利用できる可能性があります。'.
< 時刻スタンプ > 状態: 0、コード: 22037、テキスト: 'プロセスを実行できませんでした '< サーバー名 >' の ' sp_replcmds' です。' です。
トラブルシューティング
-
1 のエラー メッセージ:「レプリケートされたコマンドの構文に 18805/18836 ログリーダーが失敗しました」
このメッセージにオブジェクトと、ログにトランザクションを作成した変更を指定できます。これを行うには、次の情報を使用します。-
18836 のコードには、オブジェクトを検索しているページの ID が与えられます。
-
データベース ・ ページの内容を表示するのには、
-
コマンドを使用できます。
-
18805 のコードでは、オブジェクトを提供するログ シーケンス番号 (LSN) を示します。
dbcc Log(master, 3, 'lsn', '0x00000208:000000a0:0004', 'numrecs', 1)
-
-
-
2 のエラー メッセージ:「レプリケートされたコマンドの構文に 18805/18836 ログリーダーが失敗しました」
エラー メッセージ 1 と 2 のエラー メッセージの主な違いは、エラー 2 は、ステータス メッセージが含まれていないと、「textinfo」列を指定していません。関数形式は、Microsoft SQL Server 2008 Service Pack 3 (SP3) の 11 のパッケージを更新することでこの既知の問題を解決します。
問題は、バイナリ ラージ オブジェクト (BLOB) データの種類の列があるし、の記事を使用していない、パラメーター化されたコマンドをレプリケートするためにこれらのテーブルでのみ発生します。手動でこの問題を解決するには、以下の手順を実行します。-
記事がパラメーター化されたコマンドを使用するかどうかを決定します。これを行うには、次のクエリを実行します。
select status, name from sysarticles where name =''
-
状態の値をバイナリ形式に変換します。など、41 のステータスの値のバイナリ値 101001 から右側にある、ステータス ビットとも呼ばれ、5 番目のビットにします。ステータス ビットが 1 の場合は、既に設定されます。ステータス ビットが 0 の場合、設定されていません。したがって、パラメーター化されたコマンドを構成するのには、 sp_changearticleを実行する必要です。状態ビットを変更するには、次のコマンドを実行します。
sp_changearticle 'ConstituentRequest_ETL_Trans', 'CRProfile', 'status', 'parameters'
-
-
3 のエラー メッセージ: ログリーダー タイムアウト]
この問題を解決するには、次の方法のいずれかの手順に従います。-
ログ リーダー エージェントのQueryTimeoutパラメーターの値を増やします。
注既定では、このパラメーターの値は、1,800 秒 (30 分) です。 -
QueryTimeoutパラメーターのタイムアウトを無効にするためにゼロ (0) の値を設定します。
-
ログ リーダー エージェントのReadBatchSizeパラメーターの値を小さきます。
-
-
4 のエラー メッセージ:「アサーション」
、アサーションは、SQL Server エラー ログを確認し、次のマイクロソフト サポート技術情報で説明する問題のスレッドのスタックを比較します。これらの資料では、SQL Server で発生する 2 つの一般的なアサーションについて説明します。-
923296の修正: ログ リーダー エージェントは失敗し、SQL Server 2005 でトランザクション レプリケーションを使用する場合にアサーション エラー メッセージが記録されます。
-
956273の修正: SQL Server 2005 でトランザクション レプリケーションのデータを同期するときにエラー メッセージ:"レプリケーション レプリケーション トランザクション ログ リーダー サブシステム: エージェント < エージェント名 > に失敗しました」
エラー ログでアサーションには、これらのサポート技術情報の記事で説明する問題が一致すると、適切な修正プログラムをインストールします。 -