sp_addpushsubscription_agent (Transact-SQL)
トランザクション パブリケーションに対してプッシュ サブスクリプションを同期するために使用する、新たにスケジュールされたエージェント ジョブを追加します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。
セキュリティに関する注意 |
---|
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。 |
構文
sp_addpushsubscription_agent [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db = ] 'subscriber_db' ]
[ , [ @subscriber_security_mode = ] subscriber_security_mode ]
[ , [ @subscriber_login = ] 'subscriber_login' ]
[ , [ @subscriber_password = ] 'subscriber_password' ]
[ , [ @job_login = ] 'job_login' ]
[ , [ @job_password = ] 'job_password' ]
[ , [ @job_name = ] 'job_name' ]
[ , [ @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 ]
[ , [ @dts_package_name = ] 'dts_package_name' ]
[ , [ @dts_package_password = ] 'dts_package_password' ]
[ , [ @dts_package_location = ] 'dts_package_location' ]
[ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
[ , [ @distribution_job_name = ] 'distribution_job_name' ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @subscriber_provider = ] 'subscriber_provider' ]
[ , [ @subscriber_datasrc = ] 'subscriber_datasrc' ]
[ , [ @subscriber_location = ] 'subscriber_location' ]
[ , [ @subscriber_provider_string = ] 'subscriber_provider_string' ]
[ , [ @subscriber_catalog = ] 'subscriber_catalog' ]
引数
[ @publication =] 'publication'
パブリケーションの名前です。 publication のデータ型は sysname で、既定値はありません。[ @subscriber =] 'subscriber'
サブスクライバーの名前を指定します。 subscriber のデータ型は sysname で、既定値は NULL です。[ @subscriber_db =] 'subscriber_db'
サブスクリプション データベースの名前です。 subscriber_db のデータ型は sysname で、既定値は NULL です。 SQL Server 以外のサブスクライバーでは、subscriber_db に値 (既定の転送先) を指定します。[ @subscriber_security_mode =] subscriber_security_mode
サブスクライバーへ接続して同期するときに使用するセキュリティ モードを指定します。 subscriber_security_mode のデータ型は int で、既定値は 1 です。 0 は SQL Server 認証を表します。 1 は Windows 認証を指定します。セキュリティに関する注意 キュー更新サブスクリプションの場合、サブスクライバーへの接続には SQL Server 認証を使用し、各サブスクライバーへの接続にはそれぞれ異なるアカウントを指定してください。 他のすべてのサブスクリプションについては、Windows 認証を使用してください。
[ @subscriber_login =] 'subscriber_login'
サブスクライバーへ接続して同期するときに使用するサブスクライバー ログインを指定します。subscriber_login のデータ型は sysname で、既定値は NULL です。[ @subscriber_password =] 'subscriber_password'
サブスクライバーのパスワードです。 subscriber_security_mode が 0 の場合は subscriber_password が必要です。 subscriber_password のデータ型は sysname で、既定値は NULL です。 サブスクライバー パスワードが使用される場合、サブスクライバー パスワードは自動的に暗号化されます。セキュリティに関する注意 空白のパスワードは使用しないでください。 強力なパスワードを使用してください。 可能ならば、実行時にセキュリティ資格情報の入力を求めるメッセージをユーザーに対して表示します。 スクリプト ファイルに資格情報を格納する場合は、不正アクセスを防ぐために、そのファイルをセキュリティで保護する必要があります。
[ @job_login = ] 'job_login'
エージェントを実行する Windows アカウント用のログインを指定します。 job_login のデータ型は nvarchar(257) で、既定値は NULL です。 この Windows アカウントは、エージェントがディストリビューターに接続するとき、および Windows 統合認証を使用してサブスクライバーに接続するときに必ず使用されます。[ @job_password = ] 'job_password'
エージェントを実行する Windows アカウント用のパスワードを指定します。 job_password のデータ型は sysname で、既定値はありません。セキュリティに関する注意 可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護する必要があります。
[ @job_name = ] 'job_name'
既存のエージェント ジョブの名前を指定します。 job_name のデータ型は sysname で、既定値は NULL です。 このパラメーターは、新しく作成したジョブ (既定値) の代わりに既存のジョブを使ってサブスクリプションを同期するときにだけ指定します。 sysadmin 固定サーバー ロールのメンバーではない場合、job_name を指定するときには job_login および job_password を指定する必要があります。[ @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 で、既定値は 0 です。[ @frequency_subday = ] frequency_subday
定義した期間にスケジュールを組み直す頻度を指定します。 frequency_subday のデータ型は int で、次のいずれかの値を指定できます。値
説明
1
1 回
2
秒
4 (既定値)
分
8
時
[ @frequency_subday_interval = ] frequency_subday_interval
frequency_subday の間隔を指定します。 frequency_subday_interval のデータ型は int で、既定値は 5 です。[ @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 で、既定値は 235959 です。[ @active_start_date = ] active_start_date
ディストリビューション エージェントを最初にスケジュール設定する日付を YYYYMMDD 形式で指定します。 active_start_date のデータ型は int で、既定値は 0 です。[ @active_end_date = ] active_end_date
ディストリビューション エージェントのスケジュール設定を停止する日付を YYYYMMDD 形式で指定します。 active_end_date のデータ型は int で、既定値は 99991231 です。[ @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) で、既定値は DISTRIBUTOR です。 パッケージの場所は distributor または subscriber です。[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr'
Microsoft 同期マネージャーを介したサブスクリプションの同期が可能かどうかを指定します。enabled_for_syncmgr のデータ型は nvarchar(5) で、既定値は FALSE です。 false の場合、サブスクリプションは同期マネージャーに登録されません。 true の場合、サブスクリプションは同期マネージャーに登録され、SQL Server Management Studio を起動しなくても同期できます。[ @distribution_job_name = ] 'distribution_job_name'
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。[ @publisher = ] 'publisher'
パブリッシャーの名前を指定します。 publisher のデータ型は sysname で、既定値は NULL です。[ @subscriber_provider= ] 'subscriber_provider'
SQL Server 以外のデータ ソースが登録される OLE DB プロバイダーの一意なプログラム識別子 (PROGID) を指定します。 subscriber_provider のデータ型は sysname で、既定値は NULL です。 subscriber_provider は、ディストリビューターにインストールされている OLE DB プロバイダーに対して一意である必要があります。 subscriber_provider は、SQL Server 以外のサブスクライバーに対してのみサポートされます。[ @subscriber_datasrc= ] 'subscriber_datasrc'
OLE DB プロバイダーで認識されるデータ ソースの名前を指定します。 subscriber_datasrc のデータ型は nvarchar(4000) で、既定値は NULL です。 subscriber_datasrc は DBPROP_INIT_DATASOURCE プロパティとして渡され、OLE DB プロバイダーの初期化に使用されます。 subscriber_datasrc は、SQL Server 以外のサブスクライバーに対してのみサポートされます。[ @subscriber_location= ] 'subscriber_location'
OLE DB プロバイダーで認識されるデータベースの場所を指定します。 subscriber_location のデータ型は nvarchar(4000) で、既定値は NULL です。 subscriber_location は DBPROP_INIT_LOCATION プロパティとして渡され、OLE DB プロバイダーの初期化に使用されます。 subscriber_location は、SQL Server 以外のサブスクライバーに対してのみサポートされます。[ @subscriber_provider_string= ] 'subscriber_provider_string'
データ ソースを識別する OLE DB プロバイダー固有の接続文字列を指定します。 subscriber_provider_string のデータ型は nvarchar(4000) で、既定値は NULL です。 subscriber_provider_string は、IDataInitialize に渡されるか、DBPROP_INIT_PROVIDERSTRING プロパティとして設定され、OLE DB プロバイダーの初期化に使用されます。 subscriber_provider_string は、SQL Server 以外のサブスクライバーに対してのみサポートされます。[ @subscriber_catalog= ] 'subscriber_catalog'
OLE DB プロバイダーに接続するときに使用するカタログを指定します。 subscriber_catalog のデータ型は sysname で、既定値は NULL です。 subscriber_catalog は DBPROP_INIT_CATALOG プロパティとして渡され、OLE DB プロバイダーの初期化に使用されます。 subscriber_catalog は、SQL Server 以外のサブスクライバーに対してのみサポートされます。
戻り値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
説明
sp_addpushsubscription_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".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2012Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2012]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
権限
sp_addpushsubscription_agent を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバーだけです。
関連項目
参照
レプリケーション ストアド プロシージャ (Transact-SQL)
sp_addsubscription (Transact-SQL)
sp_changesubscription (Transact-SQL)
sp_dropsubscription (Transact-SQL)
sp_helpsubscription (Transact-SQL)