sp_changesubstatus (Transact-SQL)
既存のサブスクライバの状態を変更します。このストアド プロシージャは、パブリッシャ側でパブリケーション データベースについて実行されます。
構文
sp_changesubstatus [ [ @publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
[ , [ @subscriber = ] 'subscriber' ]
, [ @status = ] 'status'
[ , [ @previous_status = ] 'previous_status' ]
[ , [ @destination_db = ] 'destination_db' ]
[ , [ @frequency_type = ] frequency_type ]
[ , [ @frequency_interval = ] frequency_interval ]
[ , [ @frequency_relative_interval = ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @frequency_subday = ] frequency_subday ]
[ , [ @frequency_subday_interval = ] frequency_subday_interval ]
[ , [ @active_start_time_of_day = ] active_start_time_of_day ]
[ , [ @active_end_time_of_day = ] active_end_time_of_day ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @optional_command_line = ] 'optional_command_line' ]
[ , [ @distribution_jobid = ] distribution_jobid ]
[ , [ @from_auto_sync = ] from_auto_sync ]
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @offloadagent= ] remote_agent_activation ]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @dts_package_name= ] 'dts_package_name' ]
[ , [ @dts_package_password= ] 'dts_package_password' ]
[ , [ @dts_package_location= ] dts_package_location ]
[ , [ @skipobjectactivation = ] skipobjectactivation
[ , [ @distribution_job_name= ] 'distribution_job_name' ]
[ , [ @publisher = ] 'publisher' ]
引数
[ @publication=] 'publication'
パブリケーションの名前を指定します。publication のデータ型は sysname で、既定値は % です。publication を指定しない場合は、すべてのパブリケーションに変更が加えられます。[ @article=] 'article'
アーティクルの名前です。アーティクルの名前はパブリケーションに対して一意である必要があります。article のデータ型は sysname で、既定値は % です。article を指定しない場合は、すべてのアーティクルに変更が加えられます。[ @subscriber=] 'subscriber'
状態を変更するサブスクライバの名前を指定します。subscriber のデータ型は sysname で、既定値は % です。subscriber を指定しない場合は、特定のアーティクルに対するすべてのサブスクライバの状態が変更されます。[ @status =] 'status'
syssubscriptions テーブル内のサブスクリプションの状態を指定します。status のデータ型は sysname で、既定値はありません。次のいずれかの値をとります。値
説明
active
サブスクライバの同期がとられ、データを受信しています。
inactive
サブスクライブはしていませんが、サブスクライバのエントリが存在します。
subscribed
サブスクライバはデータを要求していますが、まだ同期はとられていません。
[ @previous_status=] 'previous_status'
サブスクリプションの前の状態を指定します。previous_status のデータ型は sysname で、既定値は NULL です。このパラメータを使用すると、現在その状態になっているサブスクリプションを変更できるので、特定のサブスクリプション セットに対してグループ関数を実行できます (たとえば、すべてのアクティブ サブスクリプションの設定を subscribed に戻すなど)。[ @destination_db=] 'destination_db'
対象となるデータベースの名前を指定します。destination_db のデータ型は sysname で、既定値は % です。[ @frequency_type=] frequency_type
ディストリビューション タスクをスケジュールに組み込む頻度を指定します。frequency_type のデータ型は int で、既定値は NULL です。[ @frequency_interval=] frequency_interval
frequency_type によって設定された頻度に適用される値を指定します。frequency_interval のデータ型は int で、既定値は NULL です。[ @frequency_relative_interval=] frequency_relative_interval
ディストリビューション タスクを実施する日を指定します。frequency_type を 32 (月単位) に設定したときにこのパラメータを使用します。frequency_relative_interval のデータ型は int で、次のいずれかの値を指定できます。値
説明
1
第 1
2
第 2
4
第 3
8
第 4
16
最終
NULL (既定値)
[ @frequency_recurrence_factor=] frequency_recurrence_factor
frequency_type で使用される定期実行係数を指定します。frequency_recurrence_factor のデータ型は int で、既定値は NULL です。[ @frequency_subday=] frequency_subday
定義した期間にスケジュールを組み直す頻度を分単位で指定します。frequency_subday のデータ型は int で、次のいずれかの値を指定できます。値
説明
1
一度だけ
2
秒
4
分
8
時
NULL (既定値)
[ @frequency_subday_interval=] frequency_subday_interval
frequency_subday の間隔を指定します。frequency_subday_interval のデータ型は int で、既定値は NULL です。[ @active_start_time_of_day=] active_start_time_of_day
ディストリビューション タスクを最初にスケジュール設定する時刻を HHMMSS 形式で指定します。active_start_time_of_day のデータ型は int で、既定値は NULL です。[ @active_end_time_of_day=] active_end_time_of_day
ディストリビューション タスクのスケジュール設定を停止する時刻を HHMMSS 形式で指定します。active_end_time_of_day のデータ型は int で、既定値は NULL です。[ @active_start_date=] active_start_date
ディストリビューション タスクを最初にスケジュール設定する日付を YYYYMMDD 形式で指定します。active_start_date のデータ型は int で、既定値は NULL です。[ @active_end_date=] active_end_date
ディストリビューション タスクのスケジュール設定を停止する日付を YYYYMMDD 形式で指定します。active_end_date のデータ型は int で、既定値は NULL です。[ @optional_command_line=] 'optional_command_line'
省略可能なコマンド プロンプトです。optional_command_line のデータ型は nvarchar(4000) で、既定値は NULL です。[ @distribution_jobid=] distribution_jobid
サブスクリプションの状態を非アクティブからアクティブに変更するときに、サブスクリプションに対して、ディストリビュータにおけるディストリビューション エージェントのジョブ ID を指定します。その他の場合は、定義されません。このストアド プロシージャに対する 1 つの呼び出しに複数のディストリビューション エージェントが関係している場合、結果は定義されません。distribution_jobid のデータ型は binary(16) で、既定値は NULL です。[ @from_auto_sync=] from_auto_sync
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。[ @ignore_distributor=] ignore_distributor
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。[ @offloadagent= ] remote_agent_activation
注意 リモート エージェント アクティブ化は現在サポートされておらず、使用は推奨されません。このパラメータは、スクリプトの下位互換性を確保するためだけに用意されています。remote_agent_activation に 0 以外の値を設定すると、エラーが生じます。
[ @offloadserver= ] 'remote_agent_server_name'
注意 リモート エージェント アクティブ化は現在サポートされておらず、使用は推奨されません。このパラメータは、スクリプトの下位互換性を確保するためだけに用意されています。remote_agent_server_name に NULL 以外の値を設定すると、エラーが生じます。
[ @dts_package_name= ] 'dts_package_name'
データ変換サービス (DTS) パッケージの名前を指定します。dts_package_name のデータ型は sysname で、既定値は NULL です。たとえば、DTSPub_Package という名前のパッケージの場合、@dts_package_name = N'DTSPub_Package' と指定します。[ @dts_package_password= ] 'dts_package_password'
パッケージのパスワードを指定します。dts_package_password のデータ型は sysname で、既定値は NULL です。既定値はパスワードのプロパティを変更しないことを表します。注意 DTS パッケージにはパスワードを指定する必要があります。
[ @dts_package_location= ] dts_package_location
パッケージの場所を指定します。dts_package_location のデータ型は int で、既定値は 0 です。0 の場合、パッケージの場所はディストリビュータになります。1 の場合、パッケージの場所はサブスクライバになります。パッケージの場所は distributor または subscriber です。[ @skipobjectactivation= ] skipobjectactivation
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。[ @distribution_job_name= ] 'distribution_job_name'
ディストリビューション ジョブの名前を指定します。distribution_job_name のデータ型は sysname で、既定値は NULL です。[ @publisher= ] 'publisher'
MicrosoftSQL Server 以外のパブリッシャを指定します。publisher のデータ型は sysname で、既定値は NULL です。注意 SQL Server パブリッシャでアーティクルのプロパティを変更する場合は、publisher は使用しないでください。
戻り値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
説明
sp_changesubstatus は、スナップショット レプリケーションおよびトランザクション レプリケーションで使用します。
sp_changesubstatus は、状態が変更されている syssubscriptions テーブル内のサブスクライバの状態を変更します。必要であれば、sysarticles テーブル内のアーティクルの状態を更新し、アクティブか非アクティブかを示します。必要に応じて、レプリケートされたテーブルの sysobjects テーブル内のレプリケーション フラグをオンまたはオフに設定します。
権限
sp_changesubstatus を実行できるのは、固定サーバー ロール sysadmin か固定データベース ロール db_owner のメンバ、またはサブスクリプションの作成者だけです。