sp_addpullsubscription_agent (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL Managed Instance

トランザクション パブリケーションに対するプル サブスクリプションの同期で使用される、スケジュールされたエージェント ジョブを追加します。 このストアドプロシージャは、サブスクライバー側のサブスクリプションデータベースで実行されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

  
sp_addpullsubscription_agent [ @publisher = ] 'publisher'  
    [ , [ @publisher_db = ] 'publisher_db' ]          , [ @publication = ] 'publication'  
    [ , [ @subscriber = ] 'subscriber' ]  
    [ , [ @subscriber_db = ] 'subscriber_db' ]  
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]  
    [ , [ @subscriber_login = ] 'subscriber_login' ]  
    [ , [ @subscriber_password = ] 'subscriber_password' ]  
    [ , [ @distributor = ] 'distributor' ]  
    [ , [ @distribution_db = ] 'distribution_db' ]  
    [ , [ @distributor_security_mode = ] distributor_security_mode ]  
    [ , [ @distributor_login = ] 'distributor_login' ]  
    [ , [ @distributor_password = ] 'distributor_password' ]  
    [ , [ @optional_command_line = ] 'optional_command_line' ]  
    [ , [ @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 ]  
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]  
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]  
    [ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port = ] ftp_port ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]  
    [ , [ @working_directory = ] 'working_directory' ]  
    [ , [ @use_ftp = ] 'use_ftp' ]  
    [ , [ @publication_type = ] publication_type ]  
    [ , [ @dts_package_name = ] 'dts_package_name' ]  
    [ , [ @dts_package_password = ] 'dts_package_password' ]  
    [ , [ @dts_package_location = ] 'dts_package_location' ]  
    [ , [ @reserved = ] 'reserved' ]  
    [ , [ @offloadagent = ] 'remote_agent_activation' ]  
    [ , [ @offloadserver = ] 'remote_agent_server_name']  
    [ , [ @job_name = ] 'job_name' ]  
    [ , [ @job_login = ] 'job_login' ]   
    [ , [ @job_password = ] 'job_password' ]   

引数

[ @publisher = ] 'publisher'Publisher の名前を指定します。 publishersysname で、既定値はありません。

注意

サーバー名はとして指定でき <Hostname>,<PortNumber> ます。 Linux または Windows カスタムポートを使用して SQL Server が配置されている場合は、接続のポート番号を指定する必要があります。また、browser サービスが無効になっています。 リモートディストリビューターにカスタムポート番号を使用するのは、SQL Server 2019 にのみ適用されます。

[ @publisher_db = ] 'publisher_db'_Publisher データベースの名前を指定します。 publisher_dbsysname で、既定値は NULL です。 publisher_db は、Oracle パブリッシャーでは無視されます。

[ @publication = ] 'publication' パブリケーションの名前を指定します。 publicationsysname,、既定値はありません。

[ @subscriber = ] 'subscriber' サブスクライバーインスタンスの名前を指定します。または、サブスクライバーデータベースが可用性グループ内にある場合は、AG リスナーの名前を指定します。 サブスクライバーsysname,、既定値は NULL です。

注意

このパラメーターは非推奨とされており、スクリプトの旧バージョンとの互換性のために保持されています。

[ @subscriber_db = ] 'subscriber_db' サブスクリプションデータベースの名前を指定します。 subscriber_dbsysname,、既定値は NULL です。

注意

このパラメーターは非推奨とされており、スクリプトの旧バージョンとの互換性のために保持されています。

[ @subscriber_security_mode = ] subscriber_security_mode 同期時にサブスクライバーに接続するときに使用するセキュリティモードを示します。 subscriber_security_modeint,、 既定値は NULL です。 0 は認証を指定し SQL Server ます。 1 Windows 認証を指定します。

注意

このパラメーターは非推奨とされており、スクリプトの旧バージョンとの互換性のために保持されています。 ディストリビューションエージェントは、常に Windows 認証を使用してローカルサブスクライバーに接続します。 このパラメーターに NULL または 1 以外の値が指定されている場合は、警告メッセージが返されます。

[ @subscriber_login = ] 'subscriber_login' サブスクライバーに接続して同期するときに使用するサブスクライバーログインを示します。subscriber_loginsysname,、既定値は NULL です。

注意

このパラメーターは非推奨とされており、スクリプトの旧バージョンとの互換性のために保持されています。 このパラメーターに値が指定されている場合は、警告メッセージが返されますが、値は無視されます。

[ @subscriber_password = ] 'subscriber_password' サブスクライバーパスワードを入力します。 subscriber_security_mode0 に設定されている場合は subscriber_password が必要です。 subscriber_passwordsysname,、既定値は NULL です。 サブスクライバーパスワードが使用されている場合は、自動的に暗号化されます。

注意

このパラメーターは非推奨とされており、スクリプトの旧バージョンとの互換性のために保持されています。 このパラメーターに値が指定されている場合は、警告メッセージが返されますが、値は無視されます。

[ @distributor = ] 'distributor' ディストリビューターの名前を指定します。 ディストリビューターsysname で、既定値は publisher によって指定された値です。

[ @distribution_db = ] 'distribution_db' ディストリビューションデータベースの名前を指定します。 distribution_dbsysname で、既定値は NULL です。

[ @distributor_security_mode = ] distributor_security_mode は、同期時にディストリビューターに接続するときに使用するセキュリティモードです。 distributor_security_modeint,、既定値は 1 です。 0 は認証を指定し SQL Server ます。 1 Windows 認証を指定します。

重要

可能な場合は、Windows 認証を使用します。

[ @distributor_login = ] 'distributor_login' ディストリビューターへの接続時に、同期時に使用するディストリビューターログインを示します。 distributor_security_mode0 に設定されている場合は distributor_login が必要です。 distributor_loginsysname,、既定値は NULL です。

[ @distributor_password = ] 'distributor_password' ディストリビューターパスワードを入力します。 distributor_security_mode0 に設定されている場合は distributor_password が必要です。 distributor_passwordsysname,、既定値は NULL です。

重要

空白のパスワードは使用しないでください。 強力なパスワードを使用してください。 可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。

[ @optional_command_line = ] 'optional_command_line' ディストリビューションエージェントに指定された省略可能なコマンドプロンプトです。 たとえば、 -definitionfile C:\Distdef.txt または -commitbatchsize 10 のようになります。 optional_command_linenvarchar (4000),、既定値は空の文字列です。

[ @frequency_type = ] frequency_type ディストリビューションエージェントをスケジュールする頻度を指定します。 frequency_typeint,、値は次のいずれかを指定することができます。

説明
1 1 回
2 (既定値) オン デマンド
4 毎日
8 週次
16 月単位
32 月単位の相対
64 自動開始
128 繰り返し

注意

64 を指定すると、ディストリビューションエージェントが連続モードで実行されます。 これは、エージェントの -Continuous パラメーターの設定に対応しています。 詳細については、「 Replication Distribution Agent」を参照してください。

[ @frequency_interval = ] frequency_intervalFrequency_type によって設定された頻度に適用する値を指定します。 frequency_intervalint,、既定値は1です。

[ @frequency_relative_interval = ] frequency_relative_interval ディストリビューションエージェントの日付を指定します。 このパラメーターは、 frequency_type32 (月単位) に設定されている場合に使用されます。 frequency_relative_intervalint,、値は次のいずれかを指定することができます。

説明
1 (既定値) First
2 Second
4 Third
8 4 番目
16 末尾

[ @frequency_recurrence_factor = ] frequency_recurrence_factorFrequency_type によって使用される定期実行係数です。 frequency_recurrence_factorint,、既定値は 1 です。

[ @frequency_subday = ] frequency_subday 定義した期間中に再スケジュールする頻度を指定します。 frequency_subdayint,、値は次のいずれかを指定することができます。

説明
1 (既定値) 1 度
2 Second
4
8 時間

[ @frequency_subday_interval = ] frequency_subday_intervalFrequency_subday の間隔を指定します。 frequency_subday_intervalint,、既定値は 1 です。

[ @active_start_time_of_day = ] active_start_time_of_day ディストリビューションエージェントを最初にスケジュール設定する時刻を HHMMSS 形式で指定します。 active_start_time_of_dayint,、既定値は 0 です。

[ @active_end_time_of_day = ] active_end_time_of_day ディストリビューションエージェントのスケジュール設定を停止する時刻を HHMMSS 形式で指定します。 active_end_time_of_dayint,、既定値は 0 です。

[ @active_start_date = ] active_start_date ディストリビューションエージェントを最初にスケジュール設定する日付を YYYYMMDD 形式で指定します。 active_start_dateint,、既定値は 0 です。

[ @active_end_date = ] active_end_date ディストリビューションエージェントのスケジュール設定を停止する日付を YYYYMMDD 形式で指定します。 active_end_dateint,、既定値は 0 です。

[ @distribution_jobid = ] _distribution_jobidOUTPUT このジョブのディストリビューションエージェントの ID を示します。 distribution_jobidバイナリ (16) で、既定値は NULL です。これは出力パラメーターです。

[ @encrypted_distributor_password = ] encrypted_distributor_passwordEncrypted_distributor_password の設定はサポートされなくなりました。 この ビット パラメーターを 1 に設定しようとすると、エラーが発生します。

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' 同期マネージャーを使用してサブスクリプションを同期できるかどうかを指定 Microsoft します。 enabled_for_syncmgrnvarchar (5),、既定値は FALSE です。 False の場合、サブスクリプションは同期マネージャーに登録されていません。 True の場合、サブスクリプションは同期マネージャーに登録され、を起動せずに同期でき SQL Server Management Studio ます。

[ @ftp_address = ] 'ftp_address' 旧バージョンとの互換性のためにのみ使用します。

[ @ftp_port = ] ftp_port 旧バージョンとの互換性のためにのみ使用します。

[ @ftp_login = ] 'ftp_login' 旧バージョンとの互換性のためにのみ使用します。

[ @ftp_password = ] 'ftp_password' 旧バージョンとの互換性のためにのみ使用します。

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'_ スナップショットの代替フォルダーの場所を指定します。 alternate_snapshot_foldernvarchar (255),、既定値は NULL です。

[ @working_directory = ] 'working_director' パブリケーションのデータとスキーマファイルを格納するために使用する作業ディレクトリの名前を指定します。 working_directorynvarchar (255),、既定値は NULL です。 名前は UNC 形式で指定する必要があります。

[ @use_ftp = ] 'use_ftp' スナップショットを取得するために通常のプロトコルではなく FTP を使用することを指定します。 use_ftpnvarchar (5),、既定値は FALSE です。

[ @publication_type = ] publication_type パブリケーションのレプリケーションの種類を指定します。 publication_typetinyint で、既定値は 0 です。 0 の場合、パブリケーションはトランザクションの種類です。 1 の場合、パブリケーションはスナップショットの種類です。 2 の場合、publication はマージの種類です。

[ @dts_package_name = ] 'dts_package_name' DTS パッケージの名前を指定します。 dts_package_namesysname で、既定値は NULL です。 たとえば、DTSPub_Package というパッケージを指定するには、パラメーターを @dts_package_name = N'DTSPub_Package' と設定します。

[ @dts_package_password = ] 'dts_package_password' パッケージのパスワードを指定します (存在する場合)。 dts_package_passwordsysname で、既定値は NULL です。これは、パスワードがパッケージに含まれていないことを意味します。

注意

Dts_package_name が指定されている場合は、パスワードを指定する必要があります。

[ @dts_package_location = ] 'dts_package_location' パッケージの場所を指定します。 dts_package_locationnvarchar (12),、既定値は サブスクライバー です。 パッケージの場所には、 ディストリビューター または サブスクライバー を指定できます。

[ @reserved = ] 'reserved' 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

[ @offloadagent = ] 'remote_agent_activation'

注意

リモートエージェントのアクティブ化は非推奨とされており、サポートされなくなりました。 このパラメーターは、スクリプトの旧バージョンとの互換性を維持するためにのみサポートされています。 Remote_agent_activationfalse 以外の値に設定すると、エラーが発生します。

[ @offloadserver = ] 'remote_agent_server_name'

注意

リモートエージェントのアクティブ化は非推奨とされており、サポートされなくなりました。 このパラメーターは、スクリプトの旧バージョンとの互換性を維持するためにのみサポートされています。 Remote_agent_server_name を NULL 以外の値に設定すると、エラーが発生します。

[ @job_name = ] 'job_name' 既存のエージェントジョブの名前を指定します。 job_namesysname で、既定値は NULL です。 このパラメーターは、新しく作成されたジョブ (既定値) ではなく、既存のジョブを使用してサブスクリプションを同期する場合にのみ指定します。 Sysadmin 固定サーバーロールのメンバーでない場合は、 job_name を指定するときに job_loginjob_password を指定する必要があります。

[ @job_login = ] 'job_login'エージェントを実行する Windows アカウントのログインを指定します。 job_loginnvarchar (257),、既定値はありません。 この Windows アカウントはサブスクライバーへのエージェント接続で常に使用されます。

[ @job_password = ] 'job_password'エージェントを実行する Windows アカウントのパスワードを指定します。 job_passwordsysname であり、既定値はありません。

重要

可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。

リターン コードの値

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

解説

sp_addpullsubscription_agent は、スナップショットレプリケーションおよびトランザクションレプリケーションで使用します。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2012';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2012Replica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

アクセス許可

Sp_addpullsubscription_agent を実行できるのは、固定サーバーロール sysadmin または固定データベースロール db_owner のメンバーだけです。

参照

Create a Pull Subscription
Subscribe to Publications
sp_addpullsubscription (transact-sql SQL)
sp_change_subscription_properties (transact-sql SQL)
sp_droppullsubscription (transact-sql SQL)
sp_helppullsubscription (transact-sql SQL)
sp_helpsubscription_properties (Transact-SQL)