sp_addmergesubscription (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

プッシュ マージ サブスクリプションまたはプル マージ サブスクリプションを作成します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

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できます。