sp_addpullsubscription_agent (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_subda y= ] 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 のデータ型は sysname で、既定値はありません。[ @publisher_db=] **'**publisher_db'
パブリッシャ データベースの名前を指定します。publisher_db のデータ型は sysname で、既定値は NULL です。publisher_db は Oracle パブリッシャでは無視されます。[ @publication=] 'publication'
パブリケーションの名前を指定します。publication のデータ型は sysname で、既定値はありません。[ @subscriber=] 'subscriber'
サブスクライバの名前を指定します。subscriber のデータ型は sysname で、既定値は NULL です。注 このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、推奨されません。
[ @subscriber_db=] 'subscriber_db'
サブスクリプション データベースの名前を指定します。subscriber_db のデータ型は sysname で、既定値は NULL です。注 このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、推奨されません。
[ @subscriber_security_mode=] subscriber_security_mode
サブスクライバへ接続して同期するときに使用するセキュリティ モードを指定します。subscriber_security_mode のデータ型は int で、既定値は NULL です。0 は SQL Server 認証を表します。1 は Windows 認証を表します。注 このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。ディストリビューション エージェントは常に Windows 認証を使用してローカル サブスクライバに接続します。このパラメータに NULL または 1 以外の値を指定した場合は、警告メッセージが返されます。
[ @subscriber_login =] 'subscriber_login'
サブスクライバへ接続して同期するときに使用するサブスクライバ ログインを指定します。subscriber_login のデータ型は sysname で、既定値は NULL です。注 このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。このパラメータに値を指定した場合は、警告メッセージが返されますが、値は無視されます。
[ @subscriber_password=] 'subscriber_password'
サブスクライバ パスワードを指定します。subscriber_security_mode が 0 の場合は subscriber_password が必要です。subscriber_password のデータ型は sysname で、既定値は NULL です。サブスクライバ パスワードを使用する場合、サブスクライバ パスワードは自動的に暗号化されます。注 このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。このパラメータに値を指定した場合は、警告メッセージが返されますが、値は無視されます。
[ @distributor =] 'distributor'
ディストリビュータの名前を指定します。distributor のデータ型は sysname。publisher で指定されている値が既定値になります。[ @distribution_db=] 'distribution_db'
ディストリビューション データベースの名前を指定します。distribution_db のデータ型は sysname で、既定値は NULL です。[ @distributor_security_mode=] distributor_security_mode
ディストリビュータへ接続して同期するときに使用するセキュリティ モードを指定します。distributor_security_mode のデータ型は int で、既定値は 1 です。0 は SQL Server 認証を指定します。1 は Windows 認証を指定します。セキュリティに関する注意 可能な場合は、Windows 認証を使用します。
[ @distributor_login=] 'distributor_login'
ディストリビュータへ接続して同期するときに使用するディストリビュータ ログインを指定します。distributor_security_mode を 0 に設定した場合は、distributor_login も指定する必要があります。distributor_login のデータ型は sysname で、既定値は NULL です。[ @distributor_password =] 'distributor_password'
ディストリビュータのパスワードを指定します。distributor_security_mode が 0 の場合は distributor_password が必要です。distributor_password のデータ型は sysname で、既定値は NULL です。セキュリティに関する注意 パスワードは空白のままにしないでください。強力なパスワードを使用してください。可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
[ @optional_command_line=] 'optional_command_line'
ディストリビューション エージェントに与えられるコマンド プロンプトで、省略可能です。たとえば、-DefinitionFile C:\Distdef.txt または -CommitBatchSize 10 のように指定します。optional_command_line のデータ型は nvarchar(4000) で、既定値は空の文字列です。[ @frequency_type = ] frequency_type
ディストリビューション エージェントをスケジュールに組み込む頻度を指定します。frequency_type のデータ型は int で、次のいずれかの値を指定できます。値
説明
1
指定日時
2 (既定値)
要求時
4
毎日
8
毎週
16
毎月
32
月単位
64
自動的に起動
128
定期的
注 値 64 を指定すると、ディストリビューション エージェントは連続モードで実行されます。これはエージェントに -Continuous パラメータを設定することに相当します。詳細については、「レプリケーション ディストリビューション エージェント」を参照してください。
[ @frequency_interval = ] frequency_interval
frequency_type で設定した頻度に適用される値を指定します。frequency_interval のデータ型は int で、既定値は 1 です。[ @frequency_relative_interval = ]frequency_relative_interval
ディストリビューション エージェントを実行する日付を指定します。このパラメータは、frequency_type を 32 (月単位) に設定した場合に使用します。frequency_relative_interval のデータ型は int で、次のいずれかの値を指定できます。値
説明
1 (既定値)
第 1
2
第 2
4
第 3
8
第 4
16
最終
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
frequency_type で使用される定期実行係数を指定します。frequency_recurrence_factor のデータ型は int で、既定値は 1 です。[ @frequency_subday = ]frequency_subday
定義した期間内にスケジュールを組み直す頻度を指定します。frequency_subday のデータ型は int で、次のいずれかの値を指定できます。値
説明
1 (既定値)
1 回のみ
2
秒
4
分
8
時
[ @frequency_subday_interval = ]frequency_subday_interval
frequency_subday の間隔を指定します。frequency_subday_interval のデータ型は int で、既定値は 1 です。[ @active_start_time_of_day = ] active_start_time_of_day
ディストリビューション エージェントを最初にスケジュール設定する時刻を HHMMSS 形式で指定します。active_start_time_of_day のデータ型は int で、既定値は 0 です。[ @active_end_time_of_day = ] active_end_time_of_day
ディストリビューション エージェントのスケジュール設定を停止する時刻を HHMMSS 形式で指定します。active_end_time_of_day のデータ型は int で、既定値は 0 です。[ @active_start_date = ] active_start_date
ディストリビューション エージェントを最初にスケジュール設定する日付を YYYYMMDD 形式で指定します。active_start_date のデータ型は int で、既定値は 0 です。[ @active_end_date = ] active_end_date
ディストリビューション エージェントのスケジュール設定を停止する日付を YYYYMMDD 形式で指定します。active_end_date のデータ型は int で、既定値は 0 です。[ @distribution_jobid =] distribution_jobidOUTPUT
このジョブのディストリビューションの ID を指定します。distribution_jobid のデータ型は binary(16) で、既定値は NULL です。OUTPUT パラメータの 1 つです。[ @encrypted_distributor_password=] encrypted_distributor_password
encrypted_distributor_password の設定はサポートされなくなりました。この bit パラメータを 1 に設定すると、エラーになります。[ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
Microsoft 同期マネージャを介したサブスクリプションの同期が可能かどうかを指定します。enabled_for_syncmgr のデータ型は nvarchar(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_folder のデータ型は nvarchar(255) で、既定値は NULL です。[ @working_directory= ] 'working_director'
パブリケーション用のデータ ファイルとスキーマ ファイルの格納に使用する作業ディレクトリの名前を指定します。working_directory のデータ型は nvarchar(255) で、既定値は NULL です。名前は UNC 形式で指定する必要があります。[ @use_ftp= ] 'use_ftp'
スナップショットを取得するときに、通常のプロトコルの代わりに FTP を使用するかどうかを指定します。use_ftp のデータ型は nvarchar(5) で、既定値は FALSE です。[ @publication_type = ] publication_type
パブリケーションのレプリケーションの種類を指定します。publication_type のデータ型は tinyint で、既定値は 0 です。0 を指定すると、パブリケーションはトランザクション タイプになります。1 を指定すると、パブリケーションはスナップショット タイプになります。2 を指定すると、パブリケーションはマージ タイプになります。[ @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_package_name を指定した場合は、パスワードを指定する必要があります。
[ @dts_package_location= ] 'dts_package_location'
パッケージの場所を指定します。dts_package_location のデータ型は nvarchar(12) で、既定値は subscriber です。パッケージの場所としては、distributor または subscriber を指定できます。[ @reserved= ] 'reserved'
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。[ @offloadagent= ] 'remote_agent_activation'
注 リモート エージェント アクティブ化は現在サポートされておらず、使用は推奨されません。このパラメータは、スクリプトの下位互換性を確保するためだけに用意されています。remote_agent_activation に false 以外の値を指定すると、エラーが発生します。
[ @offloadserver= ] 'remote_agent_server_name'
注 リモート エージェント アクティブ化は現在サポートされておらず、使用は推奨されません。このパラメータは、スクリプトの下位互換性を確保するためだけに用意されています。remote_agent_server_name に NULL 以外の値を指定すると、エラーが発生します。
[ @job_name= ] 'job_name'
既存のエージェント ジョブの名前を指定します。job_name のデータ型は sysname で、既定値は NULL です。このパラメータは、新しく作成したジョブ (既定値) の代わりに既存のジョブを使ってサブスクリプションを同期するときにだけ指定します。sysadmin 固定サーバー ロールのメンバではない場合、job_name を指定するときには job_login および job_password を指定する必要があります。[ @job_login= ] 'job_login'
エージェントを実行する Windows アカウント用のログインを指定します。job_login のデータ型は nvarchar(257) で、既定値はありません。この Windows アカウントはサブスクライバへのエージェント接続で常に使用されます。[ @job_password= ] 'job_password'
エージェントを実行する Windows アカウント用のパスワードを指定します。job_password のデータ型は sysname で、既定値はありません。セキュリティに関する注意 可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
戻り値
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'AdventureWorks2008R2';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorks2008R2Replica]
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 固定データベース ロールのメンバだけです。