次の方法で共有


sp_addmergepushsubscription_agent (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

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

重要

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

Transact-SQL 構文表記規則

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

構文

sp_addmergepushsubscription_agent
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

引数

[ @publication = ] N'publication'

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

[ @subscriber = ] N'subscriber'

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

[ @subscriber_db = ] N'subscriber_db'

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

[ @subscriber_security_mode = ] subscriber_security_mode

同期時にサブスクライバーに接続するときに使用するセキュリティ モード。 @subscriber_security_modesmallint で、既定値は 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 認証を使用します。

[ @subscriber_login = ] N'subscriber_login'

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

[ @subscriber_password = ] N'subscriber_password'

SQL Server 認証のサブスクライバー パスワード。 @subscriber_passwordsysname で、既定値は NULL です。 @subscriber_security_mode0 に設定されている場合は、@subscriber_passwordが必要です。 サブスクライバー パスワードが使用されている場合は、自動的に暗号化されます。

重要

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

[ @publisher_security_mode = ] publisher_security_mode

同期時にパブリッシャーに接続するときに使用するセキュリティ モード。 @publisher_security_modesmallint で、既定値は 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 認証を使用します。

[ @publisher_login = ] N'publisher_login'

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

[ @publisher_password = ] N'publisher_password'

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

重要

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

[ @job_login = ] N'job_login'

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

[ @job_password = ] N'job_password'

エージェントが実行される Windows アカウントのパスワード。 @job_passwordsysname で、既定値はありません。

重要

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

[ @job_name = ] N'job_name'

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

[ @frequency_type = ] frequency_type

マージ エージェントの実行日時を示す値。 @frequency_typeint で、次のいずれかの値を指定できます。

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

Note

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

[ @frequency_interval = ] frequency_interval

マージ エージェントを実行する曜日を指定します。 @frequency_intervalint で、次のいずれかの値を指定できます。

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

[ @frequency_relative_interval = ] frequency_relative_interval

マージ エージェントの日付。 このパラメーターは、 @frequency_type32 (毎月の相対) に設定されている場合に使用されます。 @frequency_relative_intervalint で、次のいずれかの値を指定できます。

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

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

@frequency_typeによって使用される繰り返し係数。 @frequency_recurrence_factorint で、既定値は 0 です。

[ @frequency_subday = ] frequency_subday

定義された期間中にスケジュールを変更する頻度。 @frequency_subdayint で、次のいずれかの値を指定できます。

Value 説明
1 1 回。
2 Second
4
8 時間
NULL (既定)

[ @frequency_subday_interval = ] frequency_subday_interval

@frequency_subdayの間隔。 @frequency_subday_intervalint で、既定値は NULL です。

[ @active_start_time_of_day = ] active_start_time_of_day

マージ エージェントが最初にスケジュールされた時刻。HHmmss形式です。 @active_start_time_of_dayint で、既定値は 0 です。

[ @active_end_time_of_day = ] active_end_time_of_day

マージ エージェントのスケジュールが終了した時刻(HHmmss形式)。 @active_end_time_of_dayint で、既定値は 235959 です。

[ @active_start_date = ] active_start_date

マージ エージェントが最初にスケジュールされた日付。yyyyMMdd形式です。 @active_start_dateint で、既定値は 0 です。

[ @active_end_date = ] active_end_date

マージ エージェントのスケジュールが終了した日付。yyyyMMdd形式。 @active_end_dateint で、既定値は 99991231 です。

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Windows 同期マネージャーを介したサブスクリプションの同期が可能かどうかを指定します。 @enabled_for_syncmgrnvarchar(5) で、既定値は false です。

  • false場合、サブスクリプションは同期マネージャーに登録されません。
  • true場合、サブスクリプションは同期マネージャーに登録され、SQL Server Management Studio を起動せずに同期できます。

リターン コードの値

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

解説

sp_addmergepushsubscription_agent はマージ レプリケーションで使用され、 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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

アクセス許可

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