現象
sp_replmonitorsubscriptionpendingcmds ストアド プロシージャは、ピアツーピア (P2P) レプリケーションと互換性がありません。 保留中のコマンドの数が正しくありません。 この修正プログラムを適用すると、 sp_replmonitorsubscriptionpendingcmds は P2P レプリケーションと互換性があります。
メモ レプリケーション モニターの [Undistributed Commands] タブは、バックグラウンドでsp_replmonitorsubscriptionpendingcmdsを呼び出します。
解決方法
累積的な更新プログラムの情報
この問題は、SQL Serverの次の累積的な更新プログラムで修正されています。
注 この累積的な更新プログラムを適用した後も、MSrepl_originators テーブルに古いエントリが含まれている場合、sp_replmonitorsubscriptionpendingcmdsは P2P レプリケーションの保留中のコマンドの数が正しく報告されない可能性があります。
MSrepl_originators テーブルに古いエントリが含まれている場合、sp_replmonitorsubscriptionpendingcmdsを実行すると、SQL Server エラー ログに次の警告メッセージが生成されます。
警告: サブスクリプション データベース '<database_name > ' のデータベース バージョンを取得できません。 sp_replmonitorsubscriptionpendingcmdsでは、P2P レプリケーションの保留中のコマンドの数が正しく報告されないことがあります。
この問題を解決するには、MSrepl_originatorsから古いエントリを削除するか、sp_replmonitorsubscriptionpendingcmdsを実行するときに、サブスクリプション データベースの正しい "dbversion" をsubdb_version引数 として渡します。
ヒント: 次のいずれかの方法を選択して、サブスクリプション データベースの "dbversion" を見つけることができます。
-
ディストリビューション データベースで次のクエリを実行します。 select dbversion from MSrepl_originators
where publisher_database_id = <Publisher_Database_ID>#x2
and dbname = <Subscriber_Database>
注 <Publisher_Database_ID> 、<Subscriber_Server>、<Subscriber_Database>に適切な値を置き換える必要があります。 -
サブスクリプション データベースで次のクエリを実行します。 declare @current_version int , @currentGuid uniqueidentifier#x1
from sys.database_recovery_status
where database_id = db_id()
select @current_version = substring(convert(binary(16), isnull(@currentGuid, 0x0)),1,6)
print @current_version
SQL Serverの各新しい累積的な更新プログラムには、以前のビルドにあったすべての修正プログラムとセキュリティ修正プログラムが含まれています。 SQL Serverのバージョンの最新のビルドをインストールすることをお勧めします。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
Microsoft がソフトウェア更新プログラムの説明に使用する 用語 について説明します。