sp_addmergepullsubscription_agent (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'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 = ] N'optional_command_line' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

引数

[ @name = ] N'name'

エージェントの名前。 @nameは sysname で、既定値は NULL.

[ @publisher = ] N'publisher'

パブリッシャー サーバーの名前です。 @publisherは sysname で、既定値はありません。

[ @publisher_db = ] N'publisher_db'

パブリッシャー データベースの名前。 @publisher_dbは sysname で、既定値はありません。

[ @publication = ] N'publication'

出版物の名前。 @publicationは sysname で、既定値はありません。

[ @publisher_security_mode = ] publisher_security_mode

同期時にパブリッシャーに接続するときに使用するセキュリティ モード。 @publisher_security_modeは int で、既定値は 1. 次の値は、セキュリティ モードを定義します。

  • 0 は SQL Server 認証を指定します。
  • 1はWindows 認証を指定します。
  • 2 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra パスワード認証を指定します。
  • 3 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra 統合認証を指定します。

重要

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

[ @publisher_login = ] N'publisher_login'

同期時にパブリッシャーに接続するときに使用するログイン。 @publisher_loginは sysname で、既定値は NULL.

[ @publisher_password = ] N'publisher_password'

パブリッシャーに接続するときに使用するパスワード。 @publisher_passwordは sysname で、既定値は NULL.

重要

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

[ @publisher_encrypted_password = ] publisher_encrypted_password

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

[ @subscriber = ] N'subscriber'

サブスクライバーの名前。 @subscriberは sysname で、既定値は NULL.

[ @subscriber_db = ] N'subscriber_db'

サブスクリプション データベースの名前。 @subscriber_dbは sysname で、既定値は NULL.

[ @subscriber_security_mode = ] subscriber_security_mode

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

Note

このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。 このパラメーターに値を指定すると、警告メッセージが返されますが、値は無視されます。

[ @subscriber_login = ] N'subscriber_login'

同期時にサブスクライバーに接続するときに使用するサブスクライバー ログイン。 @subscriber_loginは sysname で、既定値は NULL. subscriber_security_modeが > に0設定されている場合は、@subscriber_loginが必要です。

Note

このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。 このパラメーターに値を指定すると、警告メッセージが返されますが、値は無視されます。

[ @subscriber_password = ] N'subscriber_password'

SQL Server 認証のサブスクライバー パスワード。 @subscriber_passwordは sysname で、既定値は NULL. @subscriber_security_modeが > に設定0されている場合は、@subscriber_passwordが必要です。

Note

このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。 このパラメーターに値を指定すると、警告メッセージが返されますが、値は無視されます。

[ @distributor = ] N'distributor'

ディストリビューターの名前。 @distributorは sysname で、既定値は @publisher です。つまり、パブリッシャーもディストリビューターです。

[ @distributor_security_mode = ] distributor_security_mode

同期時にディストリビューターに接続するときに使用するセキュリティ モード。 @distributor_security_modeは int で、既定値は 1. 次の値は、セキュリティ モードを定義します。

  • 0 は SQL Server 認証を指定します。
  • 1はWindows 認証を指定します。
  • 2 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra パスワード認証を指定します。
  • 3 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra 統合認証を指定します。
  • 4 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra トークン認証を指定します。

重要

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

[ @distributor_login = ] N'distributor_login'

同期時にディストリビューターに接続するときに使用するディストリビューター ログイン。 @distributor_loginは sysname で、既定値は NULL. @distributor_security_modeが に0設定されている場合は、@distributor_loginが必要です。

[ @distributor_password = ] N'distributor_password'

ディストリビューターのパスワード。 @distributor_passwordは sysname で、既定値は NULL. @distributor_security_modeが に0設定されている場合は、@distributor_passwordが必要です。

重要

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

[ @encrypted_password = ] encrypted_password

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

[ @frequency_type = ] frequency_type

マージ エージェントの実行日時を示す値。 @frequency_typeは int であり、これらの値のいずれかになります。

Value 説明
1 指定日時
2 オンデマンド
4 毎日
8 週単位
16 月単位
32 月単位の相対
64 Autostart
128 定期的
NULL (既定)

Note

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

[ @frequency_interval = ] frequency_interval

マージ エージェントを実行する日を指定します。 @frequency_intervalは int で、既定値は NULL、これらの値のいずれかになります。

Value 説明
1 日曜日
2 月曜日
3 火曜日
4 水曜日
5 Thursday
6 金曜日
7 土曜日
8 日付
9 平日
10 週末
NULL (既定)

[ @frequency_relative_interval = ] frequency_relative_interval

マージ エージェントの日付。 このパラメーターは、@frequency_typeが (月単位の相対) に設定されている場合32使用されます。 @frequency_relative_intervalは int であり、これらの値のいずれかになります。

Value 説明
1 First
2 Second
4 Third
8 4 番目
16 Last (最後へ)
NULL (既定)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

@frequency_typeによって使用される 繰り返し係数。 @frequency_recurrence_factorは int で、既定値は NULL.

[ @frequency_subday = ] frequency_subday

定義された期間中にスケジュールを変更する頻度。 @frequency_subdayは int であり、これらの値のいずれかになります。

Value 説明
1 1 回。
2 Second
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 = ] N'optional_command_line'

マージ エージェントに提供される省略可能なコマンド プロンプト。 @optional_command_lineは nvarchar(255) で、既定値は空の文字列です。

追加のパラメーターをマージ エージェントに提供する場合に使用できます。たとえば、次の例では、既定のクエリ タイムアウトを 600 秒に増やします。

@optional_command_line = N'-QueryTimeOut 600'

[ @merge_jobid = ] merge_jobid OUTPUT

ジョブ ID の出力パラメーター。 @merge_jobidは binary(16)の OUTPUT パラメーターで、既定値は NULL.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Windows 同期マネージャーを介したサブスクリプションの同期が可能かどうかを指定します。 @enabled_for_syncmgrは nvarchar(5) で、既定値は false. サブスクリプションが同期マネージャーに登録されていない場合 false。 の場合 true、サブスクリプションは同期マネージャーに登録され、SQL Server Management Studio を起動せずに同期できます。

[ @ftp_address = ] N'ftp_address'

これは旧バージョンとの互換性のためにだけ用意されています。

[ @ftp_port = ] ftp_port

これは旧バージョンとの互換性のためにだけ用意されています。

[ @ftp_login = ] N'ftp_login'

これは旧バージョンとの互換性のためにだけ用意されています。

[ @ftp_password = ] N'ftp_password'

これは旧バージョンとの互換性のためにだけ用意されています。

[ @alt_snapshot_folder = ] N'alt_スナップショット_folder'

スナップショット ファイルの取得元となる場所を指定します。 @alt_スナップショット_folderは nvarchar(255) で、既定値は NULL. この場合NULL、スナップショット ファイルはパブリッシャーによって指定された既定の場所から取得されます。

[ @working_directory = ] N'working_directory'

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

[ @use_ftp = ] N'use_ftp'

スナップショットを取得する一般的なプロトコルの代わりに FTP を使用することを指定します。 @use_ftpは nvarchar(5) で、既定値は false.

[ @reserved = ] N'reserved'

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

[ @use_interactive_resolver = ] N'use_interactive_resolver'

対話型リゾルバーを使用して、対話型解決を許可するすべての記事の競合を解決します。 @use_interactive_resolverは nvarchar(5) で、既定値は false.

[ @offloadagent = ] N'offloadagent'

Note

このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。 remote_agent_activationを値以外falseに設定すると、エラーが発生します。

[ @offloadserver = ] N'offloadserver'

Note

このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。 remote_agent_server_nameを NULL 以外の値に設定すると、エラーが発生します。

[ @job_name = ] N'job_name'

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

[ @dynamic_snapshot_location = ] N'dynamic_スナップショット_location'

フィルター処理されたデータ スナップショットを使用する場合に、スナップショット ファイルの読み取り先となるフォルダーへのパス。 @dynamic_スナップショット_locationは nvarchar(260) で、既定値は NULL. 詳細については、「パラメーター化されたフィルター - パラメーター化された行フィルター」を参照してください

[ @use_web_sync = ] use_web_sync

Web 同期が有効になっていることを示します。 @use_web_syncはビットで、既定値は 0. 1 は、プル サブスクリプションを HTTP を使用してインターネット経由で同期できることを指定します。

[ @internet_url = ] N'internet_url'

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

[ @internet_login = ] N'internet_login'

HTTP 基本認証を使用して Web 同期をホストしている Web サーバーに接続するときにマージ エージェントが使用するログイン。 @internet_loginは sysname で、既定値は NULL.

[ @internet_password = ] N'internet_password'

HTTP 基本認証を使用して Web 同期をホストしている Web サーバーに接続するときにマージ エージェントが使用するパスワード。 @internet_passwordは nvarchar(524) で、既定値は NULL.

重要

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

[ @internet_security_mode = ] internet_security_mode

HTTPS を使用した Web 同期中に Web サーバーに接続するときにマージ エージェントによって使用される認証方法。 @internet_security_modeは int であり、これらの値のいずれかになります。

Value 説明
0 基本認証が使用されます。
1 (既定) Windows 統合認証を使用

Note

Web 同期で基本認証を使用することをお勧めします。 Web 同期を使用するには、Web サーバーへの TLS 接続を確立する必要があります。 詳しくは、「 Configure Web Synchronization」をご覧ください。

[ @internet_timeout = ] internet_timeout

Web 同期要求が期限切れとなるまでの時間の長さ (秒単位)。 @internet_timeoutは int で、既定値は300秒です。

[ @hostname = ] N'hostname'

パラメーター化されたフィルターの HOST_NAME() 句でこの関数を WHERE 使用する場合の値をオーバーライドします。 @hostnameは sysname で、既定値は NULL.

[ @job_login = ] N'job_login'

エージェントが実行される Windows アカウントのログイン。 @job_loginは nvarchar(257) で、既定値は NULL. この Windows アカウントは、サブスクライバーへのエージェント接続と、Windows 統合認証を使用する場合のディストリビューターとパブリッシャーへの接続に常に使用されます。

[ @job_password = ] N'job_password'

エージェントが実行される Windows アカウントのパスワード。 @job_passwordは sysname で、既定値は NULL.

注意

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

リターン コードの値

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

解説

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

実行時にセキュリティ設定を正しく指定する方法の例については、「プル サブスクリプションのsp_addmergepullsubscription_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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
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

アクセス許可

sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーのみが実行sp_addmergepullsubscription_agentできます。