KB4575939 - 修正: ログ リーダー エージェントが、SQL Server 内のパーティション分割テーブルを使用した P2P またはトランザクション レプリケーションのアクセス違反例外を生成する

適用先
SQL Server 2016 Service Pack 2 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2019 on Windows SQL Server 2017 on Windows

現象

Microsoft SQL Server のパーティション分割テーブルでピアツーピア (P2P) またはトランザクション レプリケーションを使用しているとします。 パーティションの切り替えまたはマージ操作を実行し、そのパーティション内に保留中のレプリケート コマンドがあると、SQL Server エラー ログに次のエラー エントリが表示されます。

注

エラー: 608: データベース <DatabaseName> のパーティション ID <ID> にカタログ エントリが見つかりません。 メタデータに一貫性がない。 DBCC CHECKDB を実行して、メタデータの破損をチェックします。

さらに、ログ リーダー エージェントはアクセス違反ダンプを生成します。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

注釈この修正プログラムを適用した後も、そのパーティション内で保留中のレプリケートされたコマンドを使用してパーティション切り替えまたはマージ操作を実行した場合、SQL Server エラー ログにエラー 608 は表示されますが、アクセス違反のダンプは発生しません。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

追加情報

現在のバージョンから SQL Server 2008 R2 のパーティション切り替えを有効にしている場合は、近い将来、分割およびマージ操作が必要になる可能性もあります。 レプリケートされたテーブルに対して分割またはマージ操作を実行する前に、問題のパーティションに保留中のレプリケート コマンドがないことを確認します。 また、分割操作中およびマージ操作中にパーティションで DML 操作が実行されないようにする必要があります。 ログ リーダーが処理していないトランザクションがある場合や、レプリケートされたテーブルのパーティションに対して DML 操作が実行されているときに DML 操作が実行されたときに (同じパーティションを含む)、ログ リーダー エージェントで処理エラーが発生する可能性があります。 エラーを修正するには、サブスクリプションの再初期化が必要になる場合があります。

詳細については、「 パーティション テーブルとパーティション インデックスのレプリケート」を参照してください。

警告: レジストリ エディターまたは別の方法でレジストリを誤って変更すると、重大な問題が発生することがあります。

競合の検出と解決に使用される非表示列が原因で、ピアツーピアパブリケーションではパーティション切り替えを有効にしないでください。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。