修正: Microsoft SQL Server 2005年または SQL Server 2008年:: パブリッシャーとサブスクライバーを同期するディストリビューション エージェントを実行するとエラー メッセージ"(TDS) リモート プロシージャの呼び出し (RPC) プロトコル ストリームが incorr、着信の表形式のデータ ストリームを配信しています.

文書翻訳 文書翻訳
文書番号: 973103
Microsoft Microsoft SQL Server 2005年修正プログラム 1 つのダウンロード ファイルとして配布しています。修正プログラムは累積的であるため、各新しいリリースすべての修正プログラムが含まれているし、以前の SQL Server 2005 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。
すべて展開する | すべて折りたたむ

目次

現象

Microsoft SQL Server 2005 のトランザクション レプリケーションを使用します。パブリッシャーとサブスクライバーを同期するディストリビューション エージェントを実行すると、ディストリビューション エージェントが失敗し、または出力ログ配布エージェントの履歴で次のエラー メッセージが表示されます。

42000 (TDS) のリモート プロシージャ呼び出し (RPC) プロトコル ストリームが不適切です、着信の表形式のデータをストリームします。この RPC 要求にパラメーターが多すぎますが付属。最大数は 2100年です。8003

これらのエラーが繰り返し発生すると、パフォーマンスに影響することができます。このような障害が発生すると、ディストリビューション エージェントは再試行を処理する同じコマンドをもう一度します。そのため、ディストリビューション エージェントは各問題のバッチが 2 回試されますため、パブリッシャーとサブスクライバーを同期するのにはより多くの時間を使用します。

原因

ディストリビューション エージェントは、ディストリビューション データベース内の保留中のコマンドを処理する場合、それを使用して、 CommitBatchSize パラメーターとは CommitBatchThreshold サブスクライバーにコマンドを送信するときにどのように多くのコマンド一緒 1 回の実行でバッチ処理されますを決定するパラメーターです。

は、 CommitBatchSize 前に、サブスクライバーが実行するトランザクションの数のパラメーターでは、 コミット ステートメントを実行します。既定値は 100 です。は、 CommitBatchThreshold 前に、サブスクライバーに実行するレプリケーション コマンドの数のパラメーターでは、 コミット ステートメントを実行します。既定値は 1000年です。

1 つのトランザクションが 1 つコマンドを含めることができますまたはコマンドの多くを含めることができますので、設定は、 CommitBatchSize パラメーターに設定し、100、 CommitBatchThreshold パラメーターには、1000年のコマンドの 1 つのバッチで配信するのには、いくつかの数千コマンドことができます。

パブリケーションにアーティクルを追加すると、 @ ins_cmd, @ upd_cmd、、 @ del_cmd レプリケーション コマンドの種類のパラメーターが指定されて、 sp_addarticle コマンドをサブスクライバーに配信する方法を決定するストアド プロシージャです。だけでなく、 CommitBatchSizeCommitBatchThreshold パラメーターは、ディストリビューション エージェントがサブスクライバーに送信される 1 つのバッチ コマンドの数のパラメーターをバインドできるは、SQL ネイティブ クライアント OLE DB プロバイダーの最大要件についても考慮しています

最大のコマンドの 1 つのバッチで使用できる 2100年パラメーターはありません。2100 パラメーターの最大値を超えないようにするには、ディストリビューション エージェントのため自動的に大規模なバッチには十分な 1 つのバッチ ステートメントだけで分割します。その後、自動的に次の実行バッチに、残りのコマンド、コマンド バッチ内に移動します。

この問題は、ディストリビューション エージェントが誤ってコマンドのバッチを配信するために必要なパラメーターの数を計算するときに発生します。動的なストアド プロシージャは、ディストリビューション エージェントを使用する場合に発生します sp_executesql 多数のレプリケートされたコマンドのバッチのラッパーとして。

レプリケートされたコマンド、バッチ コマンドで 2098 以上のパラメーターが含まれているし、「バッチ」コマンドを使用してラップ、 sp_executesql バッチを動的に作成した Transact SQL ステートメントをディストリビューション エージェントとして提供するストアド プロシージャは、計算には含まれていませんが、 sp_executesql ストアド プロシージャ 2 つのバインドされたパラメーター自体に機能が必要です。したがって、パラメーターの合計数 2100年パラメーターを超える可能性があります。

この配信の選択肢をラップ、動的に作成した Transact SQL ステートメントのディストリビューション エージェントを使用する可能性があります、 sp_executesql ストアド プロシージャは次の状況に:
  • 資料には、テキストなどのバイナリ ラージ オブジェクト (BLOB) 列または image 列が含まれます。
  • 1 つ以上のレプリケーション コマンドの種類間でのすべてのアーティクルが使用されます。SQL 配信レプリケーション コマンドの種類を 1 つのアーティクルが使用されますが、別のアーティクルを使用する場合など、 sp_MSins_procedure ストアド プロシージャとレプリケーション コマンドの種類です。

解決方法

SQL Server 2005

この問題に対する修正は SQL Server 2005 Service Pack 3 用の累積的な更新 5 にまずリリースされました。この累積的な更新プログラム パッケージの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
972511 SQL Server 2005 Service Pack 3 用の累積的な更新プログラム パッケージ 5
メモ ビルドは累積的であるため、新しい修正プログラム リリースすべての修正プログラムが含まれているし、以前の SQL Server 2005 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。マイクロソフトはこの修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
960598 SQL Server 2005 Service Pack 3 のリリース後にリリースされた、SQL Server 2005 のビルドします。
Microsoft SQL Server 2005年の特定の SQL Server のサービス パック修正プログラムが作成されます。SQL Server 2005 Service Pack 3 のインストールに SQL Server 2005 Service Pack 3 修正プログラムを適用する必要があります。既定では、SQL Server サービス パックで提供されている修正プログラム SQL Server の次の service pack に含まれてです。

SQL Server 2008

SQL Server 2008

重要です SQL Server 2008年のリリース バージョン実行している場合は、この修正プログラムを使用する必要があります。

この問題に対する修正は累積的な更新プログラム 7 で初めてリリースされました。SQL Server 2008 年にこの累積的な更新プログラム パッケージの入手方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
973601 SQL Server 2008年の累積的な更新プログラム パッケージ 7
メモ ビルドは累積的であるため、各新しい修正プログラム リリースにはすべての修正プログラムが含まれています、以前の SQL Server 2008 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。この修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
956909 SQL Server の 2008 SQL Server 2008年のリリース以降後にリリースされたビルドします。

SQL Server 2008 Service Pack 1 (SP1)

重要です SQL Server 2008 Service Pack 1 (SP1) を実行している場合は、この修正プログラムを使用する必要があります。

この問題に対する修正は SQL Server 2008 Service Pack 1 用の累積的な更新 4 にまずリリースされました。この累積的な更新プログラム パッケージの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
973602 SQL Server 2008 Service Pack 1 用の累積的な更新プログラム パッケージ 4
メモ ビルドは累積的であるため、各新しい修正プログラム リリースにはすべての修正プログラムが含まれています、以前の SQL Server 2008 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。マイクロソフトはこの修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
970365 SQL Server の 2008 SQL Server 2008 Service Pack 1 のリリース後にリリースされたビルドします。
Microsoft SQL Server 2008 SQL Server サービス ・ パックの特定の修正プログラムが作成されます。SQL Server 2008 Service Pack 1 をインストールする SQL Server 2008 Service Pack 1 の修正プログラムを適用する必要があります。既定では、SQL Server サービス パックで提供されている修正プログラム SQL Server の次の service pack に含まれてです。

回避策

この問題を回避するには、次の方法のいずれかを使用します。

方法 1

このエラーは許容量以上のレベルを減らすための値を下げる、 CommitBatchSizeCommitBatchThreshold ディストリビューション エージェントのパラメーター。目的は、コマンドのバッチごとの 2,100 パラメーターを超えないようにするのには、コマンド 1 つのコミットのバッチの最大数を制限します。

既定値などの CommitBatchSize パラメーターは、100 です。10 に変更できます。既定値は、 CommitBatchThreshold パラメーターは 1000年です。100 に変更できます。

バッチは、最初に最適なサイズで配信されないために、これらの値を小さくするとパフォーマンスにあります。ただし、この方法の「原因」に記載されているエラーを防ぐことができます。

変更することができます、 CommitBatchSizeCommitBatchThreshold 次の方法のいずれかを使用してパラメーターを指定します。
  • 追加、 CommitBatchSizeCommitBatchThreshold SQL Server エージェント、ディストリビューション エージェント ジョブのコマンド内のパラメーターのステップします。
  • 変更は、 CommitBatchSizeCommitBatchThreshold ディストリビューターのプロパティ] ダイアログ ボックスまたはレプリケーション モニターのエージェントの新しいプロファイルを作成する際のパラメーターです。
これらのパラメーターを変更する方法の詳細については、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/ms151326 (SQL.90)


完全にこのバッチのそれ以降の再試行のエラーを回避するために必要な場合は、最悪のシナリオを計画する必要があります。これを行うには、文書内の列数を持つ、最も幅の広い記事参照してください。たとえば、トランザクション パブリケーションでパブリッシュ、100 の列を持つテーブルがある場合は、そのテーブルに対して 1 つのレプリケートされたコマンド 100 パラメーターを含めることができます。軽減する必要があります、 CommitBatchThreshold ディストリビューション エージェントは、1 つのバッチで送信する必要がありますパラメーターの最大数が多くて 2098年なるように設定するパラメーター。すべての列のコマンドでは、影響を受ける場合は、 CommitBatchThreshold パラメーターの設定は 20 2000年パラメーターに対してそのテーブルの 20 のコマンドのバッチごとの最大のサイズを変更するがあります。

方法 2

文書を設定すると、文書内のすべてのアーティクルに対して、同じレプリケーション コマンドの種類を使用します。バッチを使用して提供することを選択するのには、ディストリビューション エージェントの必要性を削減するのには、同じパブリケーション内のアーティクルのコマンド配信メカニズムの使用を避ける、 sp_executesql コマンドのバッチのラッパーとしてのストアド プロシージャです。

状況

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

詳細

レプリケーション ディストリビューション エージェントの詳細については、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/ms147328 (SQL.90)

レプリケーション エージェント プロファイルの詳細については、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/ms151223 (SQL.90)

関連情報

SQL Server の増分サービス モデルの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
935897 報告された問題に対する修正プログラムを提供するのには、SQL Server チームの増分サービス モデルを利用します。
SQL Server 2005 Service Pack 3 の入手方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
913089 SQL Server 2005 の最新の service pack を入手する方法
新機能では、SQL Server 2005 SP3 および SQL Server 2005 SP3 で改善の詳細については、次のマイクロソフト Web サイトを参照してください。
http://go.microsoft.com/fwlink/? か。LinkId 131442 =
SQL Server 更新プログラムの名前付けスキーマの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
822499 Microsoft SQL Server のソフトウェア更新プログラム パッケージの新しい命名方式は
ソフトウェアの更新の用語の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684 マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明

プロパティ

文書番号: 973103 - 最終更新日: 2011年7月20日 - リビジョン: 3.0
キーワード:?
kbfix kbqfe kbpubtypekc kbhotfixrollup kbexpertiseadvanced kbhotfixserver kbmt kbsurveynew KB973103 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:973103
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com