sp_addmergepullsubscription_agent (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
マージ パブリケーションに対するプル サブスクリプションの同期化をスケジュールするための、新しいエージェント ジョブを追加します。 このストアド プロシージャは、サブスクリプション データベースのサブスクライバーで実行されます。
構文
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 |
自動開始 |
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 |
最初 |
2 |
Second |
4 |
Third |
8 |
4 番目 |
16 |
最後 |
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_snapshot_folder'
スナップショット ファイルの取得元となる場所を指定します。 @alt_snapshot_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_snapshot_location'
フィルター処理されたデータ スナップショットを使用する場合にスナップショット ファイルが読み取られるフォルダーへのパス。 @dynamic_snapshot_location は nvarchar(260) で、既定値は NULL
です。 詳細については、「 パラメーター化されたフィルター - パラメーター化された行フィルター」を参照してください。
[ @use_web_sync = ] use_web_sync
Web 同期が有効になっていることを示します。 @use_web_sync は bit で、既定値は 0
です。 1
は、プル サブスクリプションを HTTP を使用してインターネット経由で同期できることを指定します。
[ @internet_url = ] N'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 = ] 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'
パラメーター化されたフィルターのWHERE
句でこの関数を使用する場合は、HOST_NAME()
の値をオーバーライドします。 @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
を実行できます。