KB2648158-FIX: SQL Server 2008 R2 または SQL Server 2012 のログリーダーエージェントの MaxCmdsInTran パラメーターで0以外の値を設定すると、"プロセスは実行できませんでした" というエラーメッセージが表示される

適用対象: SQL Server 2008 R2 Service Pack 1

Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) または Microsoft SQL Server 2012 の修正プログラムを1つのダウンロード可能なファイルで配布します。 修正プログラムは累積的であるため、新しいリリースごとに、以前の SQL Server 2008 R2 Service Pack 1 (SP1) または Microsoft SQL Server 2012 update release に含まれていたすべての修正プログラムとすべてのセキュリティ更新プログラムが含まれています。

現象


次のような状況で問題が発生します。
  • Microsoft SQL Server 2008 R2 または Microsoft SQL Server 2012 の1つのデータベースに基づいて、少なくとも2つのトランザクションレプリケーションパブリケーションを作成します。
  • 各文書には少なくとも1つの記事があります。 記事は重なっておらず、各記事は1つの文書にのみ属しています。
  • パブリケーションの @sync_method プロパティを 同時に設定します。
  • 文書の @immediate_sync プロパティを Trueに設定します。
  • ログリーダーエージェントの Maxcmdsintran パラメーターを0以外の値に設定します。
  • いずれかのパブリケーションで、1つのトランザクションで多くの insert を受け取ります。
  • トランザクションがコミットされると、ログリーダーエージェントは Maxcmdsintran パラメーターに従ってトランザクションの処理と分割を開始します。
  • ログリーダーエージェントがタスクを完了する前に、別のドキュメントのスナップショットエージェントが開始されます。
このシナリオでは、ログリーダーエージェントは失敗し、次のエラーメッセージが表示されます。
プロセスは ' server\instance ' で ' sp_MSadd_replcmds ' を実行できませんでした。 (ソース: MSSQLServer, エラー番号: 1007)オブジェクト ' dbo に重複するキー行を挿入することはできません。MSrepl_commands ' に一意のインデックス ' ucMSrepl_commands ' が含まれています。 (ソース: MSSQLServer, エラー番号: 1007)

解決方法


累積的な更新プログラムの情報

SQL Server 2012

この問題の修正プログラムは、SQL Server 2012 の累積的な更新プログラム1で最初にリリースされました。この累積的な更新プログラムパッケージの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2679368 SQL Server 2012 の累積的な更新プログラムパッケージ1
注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2012 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2692828 SQL Server 2012 がリリースされた後にリリースされた SQL Server 2012 ビルド
Sql server 2012 のインストールには、SQL Server 2012 修正プログラムを適用する必要があります。

SQL Server 2008 R2 SP1 の累積更新プログラムパッケージ4

この問題の修正プログラムは、累積的な更新プログラム4で最初にリリースされました。SQL Server 2008 R2 SP1 用の累積更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2633146 SQL Server 2008 R2 SP1 の累積更新プログラムパッケージ4
注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2008 R2 SP1 修正プログラムに含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 SP1 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド

回避策


この問題を回避するには、以下のいずれかの方法を使用します。
  • パブリケーションの @sync_method プロパティを "同時実行" に設定せずに、パブリケーションの @immediate_sync プロパティを "true" に設定しないでください。
  • Maxcmdsintranパラメーターの値を0に設定します。

状態


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。