この記事では、トランザクション レプリケーション パブリケーションのアーティクルとして含まれるテーブルを、データベースとパブリケーションから削除できるようになった改善点について説明します。テーブルを削除できるのは、allow_drop プロパティが TRUE に設定されている場合だけです。アーティクルを含むいずれかのパブリケーションのプロパティが FALSE に設定されている場合は、DROP TABLE 操作が失敗し、レプリケートされたアーティクルを削除できないことが報告されます。
DROP TABLE DDL がパブリケーションでサポートされている場合は、DROP TABLE 操作でパブリケーションおよびデータベースからテーブルが削除されます。ログ リーダー エージェントから削除されたテーブルのディストリビューション データベースに対してクリーンアップ コマンドが投稿され、パブリッシャーのメタデータはクリーンアップされません。削除されたテーブルを参照するすべてのログ レコードがログ リーダーで処理されなかった場合は、その削除されたテーブルに関連付けられた新しいコマンドが無視されます。既に処理されたレコードは、ディストリビューション データベースに配信されます。ログ リーダーが古い (削除された) アーティクルをクリーンアップする前にディストリビューション エージェントがそのアーティクルを処理した場合は、そのレコードをサブスクライバー データベースに適用できます。
パブリケーションでのテーブル削除のサポートを有効にするコマンド:exec sp_changepublication @publication = '<Publication Name>', @property = 'allow_drop', @value = 'true' パブリケーションの作成時にテーブル削除のサポートを有効にするコマンド:
exec sp_addpublication @publication = '<Publication Name>', ..., @allow_drop = N'true' allow_drop プロパティの既定値は False に設定されています。
解決方法
この問題は、SQL Server の以下の累積的な更新プログラムで修正されています。
SQL Server の新しい各累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムおよびセキュリティ修正プログラムが含まれています。SQL Server の最新の累積的な更新プログラムを確認してください。
Service Pack の情報この機能は当初、SQL Server の以下の Service Pack で導入されました。
SQL Server の Service Pack の概要
Service Pack は累積的であり、最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。最新の Service Pack と、その Service Pack の最新の累積的な更新プログラムを適用することをお勧めします。最新の Service Pack をインストールする前に、以前の Service Pack をインストールする必要はありません。最新の Service Pack と最新の累積的な更新プログラムについての詳細は、以下の記事の表 1 を参照してください。
SQL Server とそのコンポーネントのバージョン、エディション、更新プログラムのレベルを確認する方法
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
Author:
Writer: v-shysun
Tech Reviewer: alvorob; jeanyd; lakshmij; v-fmeng;
Editor: v-phoebh