sp_addmergepushsubscription_agent (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
プッシュ サブスクリプションの同期をマージ パブリケーションにスケジュールするために使用する新しいエージェント ジョブを追加します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
重要
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_passwordを含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「接続を暗号化するために SQL Server データベース エンジンを構成する」を参照してください。
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'
出版物の名前。 @publicationは sysname で、既定値はありません。
[ @subscriber = ] N'subscriber'
サブスクライバーの名前。 @subscriberは sysname で、既定値は NULL
.
[ @subscriber_db = ] N'subscriber_db'
サブスクリプション データベースの名前。 @subscriber_dbは sysname で、既定値は NULL
.
[ @subscriber_security_mode = ] subscriber_security_mode
同期時にサブスクライバーに接続するときに使用するセキュリティ モード。 @subscriber_security_modeは smallint で、既定値は 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_loginは sysname で、既定値は NULL
. @subscriber_security_modeが に0
設定されている場合は、@subscriber_loginが必要です。
[ @subscriber_password = ] N'subscriber_password'
SQL Server 認証のサブスクライバー パスワード。 @subscriber_passwordは sysname で、既定値は NULL
. @subscriber_security_modeが > に設定0
されている場合は、@subscriber_passwordが必要です。 サブスクライバー パスワードが使用されている場合は、自動的に暗号化されます。
重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
[ @publisher_security_mode = ] publisher_security_mode
同期時にパブリッシャーに接続するときに使用するセキュリティ モード。 @publisher_security_modeは smallint で、既定値は 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_loginは sysname で、既定値は NULL
.
[ @publisher_password = ] N'publisher_password'
パブリッシャーに接続するときに使用するパスワード。 @publisher_passwordは sysname で、既定値は NULL
.
重要
空白のパスワードは使用しないでください。 強力なパスワードを使用してください。 可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
[ @job_login = ] N'job_login'
エージェントが実行される Windows アカウントのログイン。 @job_loginは nvarchar(257) で、既定値は NULL
. この Windows アカウントは、ディストリビューターへのエージェント接続と、Windows 統合認証を使用する場合のサブスクライバーとパブリッシャーへの接続に常に使用されます。
[ @job_password = ] N'job_password'
エージェントが実行される Windows アカウントのパスワード。 @job_passwordは sysname で、既定値はありません。
重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
[ @job_name = ] N'job_name'
既存のエージェント ジョブの名前。 @job_nameは sysname で、既定値は NULL
. このパラメーターは、新しく作成されたジョブ (既定値) ではなく、既存のジョブを使用してサブスクリプションが同期されている場合にのみ指定されます。 sysadmin 固定サーバー ロールのメンバーでない場合は、@job_nameを指定するときにjob_loginとjob_passwordを指定する必要があります。
[ @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 であり、次のいずれかの値を指定できます。
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 |
Last (最後へ) |
NULL (既定値) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
@frequency_typeによって使用される 繰り返し係数。 @frequency_recurrence_factorは int で、既定値は 0
.
[ @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 で、既定値は 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
.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Windows 同期マネージャーを介したサブスクリプションの同期が可能かどうかを指定します。 @enabled_for_syncmgrは nvarchar(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
できます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示