sp_addpushsubscription_agent (Transact-SQL)

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

セキュリティに関する注意セキュリティに関する注意

リモート ディストリビュータでパブリッシャを構成する場合、job_login と job_password を含むすべてのパラメータに対して指定された値は、プレーン テキストとしてディストリビュータに送信されます。このストアド プロシージャを実行する前に、パブリッシャとそのリモート ディストリビュータ間の接続を暗号化する必要があります。詳細については、「SQL Server への接続の暗号化」を参照してください。

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

構文

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

    一度だけ

    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'AdventureWorksReplica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks]
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 のメンバだけです。