sp_addmergesubscription (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
プッシュ マージ サブスクリプションまたはプル マージ サブスクリプションを作成します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
sp_addmergesubscription
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @subscriber_type = ] N'subscriber_type' ]
[ , [ @subscription_priority = ] subscription_priority ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @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' ]
[ , [ @description = ] N'description' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @merge_job_name = ] N'merge_job_name' ]
[ , [ @hostname = ] N'hostname' ]
[ ; ]
引数
[ @publication = ] N'publication'
出版物の名前。 @publicationは sysname で、既定値はありません。 パブリケーションは既に存在している必要があります。
[ @subscriber = ] N'subscriber'
サブスクライバーの名前。 @subscriberは sysname で、既定値は NULL
.
[ @subscriber_db = ] N'subscriber_db'
サブスクリプション データベースの名前。 @subscriber_dbは sysname で、既定値は NULL
.
[ @subscription_type = ] N'subscription_type'
サブスクリプションの種類。 @subscription_typeは nvarchar(15) で、既定値は push
.
- プッシュ サブスクリプションが追加され、マージ エージェントがディストリビューターに追加された場合
push
。 - 場合
pull
は、ディストリビューターにマージ エージェントを追加せずにプル サブスクリプションが追加されます。
Note
匿名サブスクリプションでは、このストアド プロシージャを使用する必要はありません。
[ @subscriber_type = ] N'subscriber_type'
サブスクライバーの種類。 @subscriber_typeは nvarchar(15)で、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
local (既定値) |
パブリッシャーだけが認識しているサブスクライバー。 |
global |
すべてのサーバーが認識しているサブスクライバー。 |
SQL Server 2005 (9.x) 以降のバージョンでは、ローカル サブスクリプションはクライアント サブスクリプションと呼ばれ、グローバル サブスクリプションはサーバー サブスクリプションと呼ばれます。
[ @subscription_priority = ] subscription_priority
サブスクリプションの優先度を示す数値。 @subscription_priorityは実際の値で、既定値は NULL
. ローカル サブスクリプションと匿名サブスクリプションの場合、優先度は 0.0
. グローバル サブスクリプションの場合、優先度は次の値より 100.0
小さくする必要があります。
[ @sync_type = ] N'sync_type'
サブスクリプション同期の種類。 @sync_typeは nvarchar(15) で、既定値は automatic
.
- この場合
automatic
、パブリッシュされたテーブルのスキーマと初期データが最初にサブスクライバーに転送されます。 - この場合
none
、サブスクライバーはパブリッシュされたテーブルのスキーマと初期データを既に持っていると見なされます。 システム テーブルとデータは常に転送されます。
Note
の値 none
を指定しないことをお勧めします。
[ @frequency_type = ] frequency_type
マージ エージェントの実行日時を示す値。 @frequency_typeは int であり、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
1 |
1 回。 |
4 |
毎日 |
8 |
週単位 |
10 |
月単位 |
20 |
frequency_interval を基準とした月単位 |
40 |
SQL Server エージェントの起動時 |
NULL (既定) |
[ @frequency_interval = ] frequency_interval
マージ エージェントを実行する日を指定します。 @frequency_intervalは int であり、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
1 |
日曜日 |
2 |
月曜日 |
3 |
火曜日 |
4 |
水曜日 |
5 |
Thursday |
6 |
金曜日 |
7 |
土曜日 |
8 |
日付 |
9 |
平日 |
10 |
週末 |
NULL (既定) |
[ @frequency_relative_interval = ] frequency_relative_interval
各月の頻度間隔のスケジュールされたマージの発生。 @frequency_relative_intervalは int であり、これらの値のいずれかになります。
値 | 説明 |
---|---|
1 |
First |
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_intervalの単位。 @frequency_subdayは int であり、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
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(4000) で、既定値は NULL
. このパラメーターを使用して、出力をキャプチャしてファイルに保存するコマンドを追加したり、構成ファイルや属性を指定できます。
[ @description = ] N'description'
このマージ サブスクリプションの簡単な説明。 @descriptionは nvarchar(255) で、既定値は NULL
. この値は、レプリケーション モニターによって列に Friendly Name
表示されます。この列を使用して、監視対象のパブリケーションのサブスクリプションを並べ替えることができます。
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
サブスクリプションを Microsoft Windows 同期マネージャーを使用して同期できるかどうかを指定します。 @enabled_for_syncmgrは nvarchar(5) で、既定値は false
.
- サブスクリプションが同期マネージャーに登録されていない場合
false
。 - の場合
true
、サブスクリプションは同期マネージャーに登録され、SQL Server Management Studio を起動せずに同期できます。
[ @offloadagent = ] offloadagent
エージェントをリモートでアクティブ化できることを指定します。 @offloadagentはビットで、既定値は 0
.
このパラメーターは非推奨であり、スクリプトの下位互換性のためにメイン含まれています。
[ @offloadserver = ] N'offloadserver'
リモート エージェントのアクティブ化に使用するサーバーのネットワーク名を指定します。 @offloadserverは sysname で、既定値は NULL
.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
対話的に競合を回避できるすべてのアーティクルについて、対話的に競合を解決できるようにします。 @use_interactive_resolverは nvarchar(5) で、既定値は false
.
[ @merge_job_name = ] N'merge_job_name'
このパラメーターは非推奨であり、設定できません。 @merge_job_nameは sysname で、既定値は NULL
.
[ @hostname = ] N'hostname'
パラメーター化されたフィルターの WHERE 句でこの関数が使用されている場合に、HOST_NAMEによって返される値をオーバーライドします。 @hostnameは sysname で、既定値は NULL
.
重要
パラメーター化された行フィルター句では列名に関数を適用しないことをお勧めします。これは、 LEFT([MyColumn]) = SUSER_SNAME()
のように指定すると、パフォーマンスに問題が生じるためです。 フィルター句でHOST_NAMEを使用し、HOST_NAME値をオーバーライドする場合は、CONVERT を使用してデータ型を変換することが必要な場合があります。 この場合のベスト プラクティスの詳細については、「パラメーター化されたフィルター - パラメーター化された行フィルター」の「HOST_NAME() 値のオーバーライド」セクションを参照してください。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_addmergesubscription
はマージ レプリケーションで使用されます。
sysadmin 固定サーバー ロールのメンバーがプッシュ サブスクリプションを作成するために実行されるとsp_addmergesubscription
、マージ エージェント ジョブが暗黙的に作成され、SQL Server エージェント サービス アカウントで実行されます。 sp_addmergepushsubscription_agentを実行し、@job_loginと@job_passwordのエージェント固有の別の Windows アカウントの資格情報を指定することをお勧めします。 詳細については、「 レプリケーション エージェント セキュリティ モデル」を参照してください。
例
-- 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_addmergesubscription
できます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示