sp_addmergepullsubscription_agent (Transact-SQL)

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

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

構文

sp_addmergepullsubscription_agent [ [ @name = ] 'name' ] 
        , [ @publisher = ] 'publisher' 
        , [ @publisher_db = ] 'publisher_db'
        , [ @publication =] 'publication' 
    [ , [ @publisher_security_mod e= ] publisher_security_mode ] 
    [ , [ @publisher_login = ] 'publisher_login' ] 
    [ , [ @publisher_password = ] 'publisher_password' ] 
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ] 
    [ , [ @subscriber = ] 'subscriber' ] 
    [ , [ @subscriber_db = ] 'subscriber_db' ] 
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ] 
    [ , [ @subscriber_login = ] 'subscriber_login' ] 
    [ , [ @subscriber_password= ] 'subscriber_password' ] 
    [ , [ @distributor = ] 'distributor' ] 
    [ , [ @distributor_security_mode = ] distributor_security_mode ] 
    [ , [ @distributor_login = ] 'distributor_login' ] 
    [ , [ @distributor_password = ] 'distributor_password' ] 
    [ , [ @encrypted_password = ] encrypted_password ] 
    [ , [ @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' ] 
    [ , [ @merge_jobid = ] merge_jobid ] 
    [ , [ @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' ] 
    [ , [ @reserved = ] 'reserved' ] 
    [ , [ @use_interactive_resolver = ] 'use_interactive_resolver' ] 
    [ , [ @offloadagent = ] 'remote_agent_activation' ] 
    [ , [ @offloadserver = ] 'remote_agent_server_name'] 
    [ , [ @job_name = ] 'job_name' ] 
    [ , [ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
        [ , [ @internet_url = ] 'internet_url' ]
    [ , [ @internet_login = ] 'internet_login' ]
        [ , [ @internet_password = ] 'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
        [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] 'hostname' ]
        [ , [ @job_login = ] 'job_login' ] 
    [ , [ @job_password = ] 'job_password' ] 

引数

  • [ @name = ] 'name'
    エージェントの名前を指定します。name のデータ型は sysname で、既定値は NULL です。

  • [ @publisher = ] 'publisher'
    パブリッシャ サーバーの名前を指定します。publisher のデータ型は sysname で、既定値はありません。

  • [ @publisher_db = ] 'publisher_db'
    パブリッシャ データベースの名前を指定します。publisher_db のデータ型は sysname で、既定値はありません。

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

  • [ @publisher_security_mode = ] publisher_security_mode
    パブリッシャへ接続して同期するときに使用するセキュリティ モードを指定します。publisher_security_mode のデータ型は int で、既定値は 1 です。0 は SQL Server 認証を表します。1 は Windows 認証を表します。

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

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

  • [ @publisher_login = ] 'publisher_login'
    パブリッシャへ接続して同期するときに使用するログインを指定します。publisher_login のデータ型は sysname で、既定値は NULL です。

  • [ @publisher_password = ] 'publisher_password'
    パブリッシャへの接続時に使用するパスワードを指定します。publisher_password のデータ型は sysname で、既定値は NULL です。

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

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

  • [ @publisher_encrypted_password = ]publisher_encrypted_password
    publisher_encrypted_password の設定はサポートされなくなりました。この bit パラメータを 1 に設定すると、エラーになります。

  • [ @subscriber = ] 'subscriber'
    サブスクライバの名前を指定します。subscriber のデータ型は sysname で、既定値は NULL です。

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

  • [ @subscriber_security_mode = ] subscriber_security_mode
    サブスクライバへ接続して同期するときに使用するセキュリティ モードを指定します。subscriber_security_mode のデータ型は int で、既定値は 1 です。0 は SQL Server 認証を表します。1 は Windows 認証を表します。

    注意

    このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。マージ エージェントは常に Windows 認証を使用してローカル サブスクライバに接続します。このパラメータに値を指定した場合は、警告メッセージが返されますが、値は無視されます。

  • [ @subscriber_login = ] 'subscriber_login'
    サブスクライバへ接続して同期するときに使用するサブスクライバ ログインを指定します。subscriber_security_mode を 0 に設定した場合は、subscriber_login も指定する必要があります。subscriber_login のデータ型は sysname で、既定値は NULL です。

    注意

    このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。このパラメータに値を指定した場合は、警告メッセージが返されますが、値は無視されます。

  • [ @subscriber_password = ] 'subscriber_password'
    SQL Server 認証で使用するサブスクライバのパスワードを指定します。subscriber_security_mode に 0 を設定した場合は、subscriber_password を指定する必要があります。subscriber_password のデータ型は sysname で、既定値は NULL です。

    注意

    このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、使用は推奨されません。このパラメータに値を指定した場合は、警告メッセージが返されますが、値は無視されます。

  • [ @distributor = ] 'distributor'
    ディストリビュータの名前を指定します。distributor のデータ型は sysname で、既定値は publisher です。これはパブリッシャがディストリビュータでもあることを表します。

  • [ @distributor_security_mode = ] distributor_security_mode
    ディストリビュータへ接続して同期するときに使用するセキュリティ モードを指定します。distributor_security_mode のデータ型は int で、既定値は 0 です。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 です。

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

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

  • [ @encrypted_password = ] encrypted_password
    encrypted_password の設定はサポートされなくなりました。この bit パラメータを 1 に設定すると、エラーになります。

  • [ @frequency_type = ] frequency_type
    マージ エージェントをスケジュールに組み込む頻度を指定します。frequency_type のデータ型は int で、次のいずれかの値を指定できます。

    説明

    1

    指定日時

    2

    要求時

    4

    毎日

    8

    毎週

    16

    毎月

    32

    月単位

    64

    自動的に起動

    128

    定期的

    NULL (既定値)

     

    注意

    64 を指定すると、マージ エージェントは連続モードで実行されます。これはエージェントに -Continuous パラメータを設定することに相当します。詳細については、「レプリケーション マージ エージェント」を参照してください。

  • [ @frequency_interval = ] frequency_interval
    マージ エージェントを実行する日を指定します。frequency_interval のデータ型は int で、次のいずれかの値を指定できます。

    説明

    1

    日曜日

    2

    月曜日

    3

    火曜日

    4

    水曜日

    5

    木曜日

    6

    金曜日

    7

    土曜日

    8

    9

    平日

    10

    週末

    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

    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(255) で、既定値は ' ' です。追加のパラメータをマージ エージェントに提供する場合に使用できます。たとえば、次の例では、既定のクエリ タイムアウトを 600 秒に増やします。

    @optional_command_line = N'-QueryTimeOut 600'
    
  • [ @merge_jobid = ] merge_jobid
    ジョブ ID の出力パラメータを指定します。merge_jobid のデータ型は binary(16) で、既定値は NULL です。

  • [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr'
    Windows 同期マネージャを介したサブスクリプションの同期が可能かどうかを指定します。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 です。NULL の場合、スナップショット ファイルは、パブリッシャによって指定される既定の場所から取得されます。

  • [ @working_directory = ] 'working_directory'
    FTP を使用してスナップショット ファイルを転送するときに、パブリケーションのデータ ファイルとスキーマ ファイルを一時的に格納するために使用する作業ディレクトリの名前を指定します。working_directory のデータ型は nvarchar(255) で、既定値は NULL です。

  • [ @use_ftp = ] 'use_ftp'
    スナップショットを取得するときに、一般的なプロトコルの代わりに FTP を使用するかどうかを指定します。use_ftp のデータ型は nvarchar(5) で、既定値は FALSE です。

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

  • [ @use_interactive_resolver = ] 'use_interactive_resolver' ]
    対話的な競合解決が可能なすべてのアーティクルについて、インタラクティブ競合回避モジュールを使用して競合を解決します。use_interactive_resolver のデータ型は nvarchar(5) で、既定値は FALSE です。

  • [ @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 を指定する必要があります。

  • [ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
    フィルタ選択されたデータのスナップショットを使用する場合に、読み込むスナップショット ファイルが格納されているフォルダのパスを指定します。dynamic_snapshot_location のデータ型は nvarchar(260) で、既定値は NULL です。詳細については、「パラメーター化された行フィルター」を参照してください。

  • [ @use_web_sync = ] use_web_sync
    Web 同期が有効であることを示します。use_web_sync のデータ型は bit で、既定値は 0 です。1 は、HTTP を使用してインターネット経由でプル サブスクリプションを同期できることを示します。

  • [ @internet_url = ] 'internet_url'
    Web 同期用のレプリケーション リスナ (REPLISAPI.DLL) の場所を指定します。internet_url のデータ型は nvarchar(260) で、既定値は NULL です。internet_url には、http://server.domain.com/directory/replisapi.dll の形式の完全修飾 URL を指定します。サーバーの構成で、リッスンするポートがポート 80 以外の場合は、http://server.domain.com:portnumber/directory/replisapi.dll の形式のポート番号も指定する必要があります。ここで portnumber はポートを表します。

  • [ @internet_login = ] 'internet_login'
    HTTP 基本認証を使って Web 同期をホストしている Web サーバーに接続するときに、マージ エージェントが使用するログインを指定します。internet_login のデータ型は sysname で、既定値は NULL です。

  • [ @internet_password = ] 'internet_password'
    HTTP 基本認証を使って Web 同期をホストしている Web サーバーに接続するときに、マージ エージェントが使用するパスワードを指定します。internet_password のデータ型は nvarchar(524) で、既定値は NULL です。

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

    空白のパスワードは使用しないでください。強力なパスワードを使用してください。

  • [ @internet_security_mode = ] internet_security_mode
    HTTPS を使った Web 同期で Web サーバーに接続するときに、マージ エージェントが使用する認証方式を指定します。internet_security_mode のデータ型は int で、次のいずれかの値を指定できます。

    説明

    0

    基本認証を使用

    1 (既定値)

    Windows 統合認証を使用

    注意

    基本認証を Web 認証と共に使用することをお勧めします。Web 認証を使用するには、Web サーバーに SSL で接続する必要があります。詳細については、「Web 同期の構成」を参照してください。

  • [ @internet_timeout = ] internet_timeout
    Web 同期要求が期限切れとなるまでの時間を秒単位で指定します。internet_timeout のデータ型は int で、既定値は 300 秒です。

  • [ @hostname = ] 'hostname'
    HOST_NAME() がパラメータ化フィルタの WHERE 句で使用される場合に、この関数の値よりも優先する値を指定します。hostname のデータ型は sysname で、既定値は NULL です。

  • [ @job_login = ] 'job_login'
    エージェントを実行する Windows アカウント用のログインを指定します。job_login のデータ型は nvarchar(257) で、既定値はありません。Windows 統合認証を使用する場合、この Windows アカウントは、サブスクライバへのエージェント接続、およびディストリビュータやパブリッシャへの接続に常に使用されます。

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

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

    スクリプト ファイルに認証情報を格納しないでください。最大限のセキュリティを得るには、ログイン名とパスワードを実行時に指定してください。

戻り値

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

説明

sp_addmergepullsubscription_agent はマージ レプリケーションで使用され、sp_addpullsubscription_agent と同様の機能を使用します。

レプリケーション エージェントのセキュリティ モデルは、SQL Server 2000 から大きく変更されています。sp_addmergepullsubscription_agent を実行するときにセキュリティ設定を正しく指定する方法の例については、「プル サブスクリプションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

使用例

-- 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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2008R2Replica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

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

権限

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