sys.sp_replmonitorsubscriptionpendingcmds(Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

トランザクション パブリケーションのサブスクリプションに対する保留中のコマンドの数と、トランザクション パブリケーションの処理にかかる時間の大まかな見積もりに関する情報を返します。 このストアド プロシージャは、返されたサブスクリプションごとに 1 行を返します。 レプリケーションの監視に使用されるこのストアド プロシージャは、ディストリビューション データベースのディストリビューターで実行されます。

Transact-SQL 構文表記規則

構文

sys.sp_replmonitorsubscriptionpendingcmds
    [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    , [ @subscriber = ] N'subscriber'
    , [ @subscriber_db = ] N'subscriber_db'
    , [ @subscription_type = ] subscription_type
    [ , [ @subdb_version = ] subdb_version ]
[ ; ]

引数

[ @publisher = ] N'publisher'

パブリッシャーの名前。 @publishersysname で、既定値はありません。

[ @publisher_db = ] N'publisher_db'

パブリッシュされたデータベースの名前です。 @publisher_dbsysname で、既定値はありません。

[ @publication = ] N'publication'

出版物の名前。 @publicationsysname で、既定値はありません。

[ @subscriber = ] N'subscriber'

サブスクライバーの名前。 @subscribersysname で、既定値はありません。

[ @subscriber_db = ] N'subscriber_db'

サブスクリプション データベースの名前。 @subscriber_dbsysname で、既定値はありません。

[ @subscription_type = ] subscription_type

サブスクリプションの種類。 @subscription_typeはintで、デフォルトはなく、これらの値の一つになれます。

説明
0 プッシュ サブスクリプション
1 プル サブスクリプション

[ @subdb_version = ] subdb_version

サブスクリプション データベースの dbversion@subdb_version はint型のオプション パラメータで、デフォルト値は0です。

結果セット

列名 データ型 説明
pendingcmdcount int サブスクリプションで保留中のコマンドの数。
estimatedprocesstime int 保留中のすべてのコマンドをサブスクライバーに配信するために必要な秒数の見積もり。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

sp_replmonitorsubscriptionpendingcmds はトランザクション レプリケーションで使用されます。

SQL Server 2019 (15.x) CU17 より前では、 sp_replmonitorsubscriptionpendingcmds はピアツーピア レプリケーションではサポートされておらず、ピアツーピア レプリケーション トポロジのクエリに使用した場合に、保留中のコマンドの数が正しく返されませんでした。 SQL Server 2019 (15.x) CU 17 では、ピア ツー ピア パブリケーションとの互換性を sp_replmonitorsubscriptionpendingcmds するためにサポートが追加されました。

ただし、SQL Server 2019 (15.x) CU17 以降の場合でも、テーブルsp_replmonitorsubscriptionpendingcmdsに正しくないバージョンのサブスクリプション データベースの古いエントリが含まれている場合、ピアツーピア レプリケーションで使用すると、MSrepl_originatorsが誤った数の保留中のコマンドを報告する可能性があります。 この問題を解決するには、MSrepl_originatorsから古いエントリをすべて削除するか、dbversion ストアド プロシージャの subdb_version 引数を使用するときに、サブスクリプション データベースの正しいsp_replmonitorsubscriptionpendingcmdsを渡します。

を決定する方法の詳細については、dbversionを参照してください。

アクセス許可

ディストリビューターの sysadmin 固定サーバー ロールのメンバー、またはディストリビューション データベースの固定データベース ロール db_owner メンバーのみが sp_replmonitorsubscriptionpendingcmdsを実行できます。 ディストリビューション データベースを使用するパブリケーションのパブリケーション アクセス リストのメンバーは、 sp_replmonitorsubscriptionpendingcmds を実行して、そのパブリケーションの保留中のコマンドを返すことができます。