MSSQL_REPL027183
メッセージの詳細
製品名 |
SQL Server |
製品バージョン |
10.0 |
製品ビルド番号 |
|
イベント ID |
27183 |
イベント ソース |
MSSQLSERVER |
コンポーネント |
SQL Server データベース エンジン |
シンボル名 |
|
メッセージ テキスト |
マージ処理で、パラメータ化された行フィルタを使用して、アーティクル内の変更情報を列挙できませんでした。このエラーが継続して発生する場合、このプロセスのクエリ タイムアウト値を増やし、パブリケーションの保有期間を短縮し、パブリッシュされたテーブルのインデックスを強化してください。 |
説明
このエラーは、フィルタ選択されたパブリケーションでの変更を処理中に、マージ エージェント タイムアウトになると発生します。このタイムアウトは、次のいずれかの問題点により生じた可能性があります。
事前計算済みパーティションの最適化の未使用
フィルタ選択に使用される列のインデックスの断片化
MSmerge_tombstone、MSmerge_contents、MSmerge_genhistory などの、大規模なマージ メタデータ テーブル
一意キーで結合されていないフィルタ選択されたテーブルや多くのテーブルを含む結合フィルタ
ユーザーの操作
問題を解決するには、以下の操作を実行します。
マージ エージェントの -QueryTimeOut パラメータの値を大きくし、エラーの原因となっている根本的な問題に対処する間、処理を継続できるようにします。エージェント パラメータは、エージェント プロファイルおよびコマンド ラインで指定できます。詳細については、以下のトピックを参照してください。
可能であれば、事前計算済みパーティションの最適化を使用します。既定では、この最適化は、多くのパブリケーションの要件が満たされている場合に使用されます。これらの要件の詳細については、「事前計算済みパーティションによるパラメータ化されたフィルタのパフォーマンス最適化」を参照してください。パブリケーションがこれらの要件を満たしていない場合は、パブリケーションを再設計することを検討してください。
パブリケーションの保有期間をできる限り低い設定に指定します。保有期間に達するまで、レプリケーションはパブリケーション データベースおよびサブスクリプション データベースでメタデータをクリーンアップできません。詳細については、「サブスクリプションの有効期限と非アクティブ化」を参照してください。
マージ レプリケーションのメンテナンスの一環として、マージ レプリケーションに関連付けられたシステム テーブル MSmerge_contents、MSmerge_genhistory、MSmerge_tombstone、MSmerge_current_partition_mappings、および MSmerge_past_partition_mappings の増大を必要に応じて確認します。定期的にこれらのテーブルのインデックスを再設定します。詳細については、「インデックスの再編成と再構築」を参照してください。
フィルタ選択に使用する列のインデックスが適切であることを確認し、必要に応じてインデックスを再構築します。詳細については、「インデックスの再編成と再構築」を参照してください。
一意な列に基づく結合フィルタの join_unique_key プロパティを設定します。詳細については、「結合フィルタ」を参照してください。
結合フィルタ階層のテーブル数を制限します。テーブルが 5 つ以上の結合フィルタを生成する場合は、小さなテーブル、変更されないテーブル、プライマリ参照テーブルはフィルタ選択しないという別の解決策を検討してください。結合フィルタは、サブスクリプション間でパーティション分割する必要のあるテーブル間でのみ使用します。
同期を行うまでの間はフィルタ選択されたテーブルへの変更を少なくするか、マージ エージェントをより頻繁に実行します。同期処理のスケジュール設定の詳細については、「同期スケジュールを指定する方法 (SQL Server Management Studio)」および「同期スケジュールを指定する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。