sp_addmergepublication (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
新しいマージ パブリケーションを作成します。 このストアド プロシージャは、発行されるデータベースのパブリッシャーで実行されます。
構文
sp_addmergepublication [ @publication = ] 'publication'
[ , [ @description = ] 'description'
[ , [ @retention = ] retention ]
[ , [ @sync_mode = ] 'sync_mode' ]
[ , [ @allow_push = ] 'allow_push' ]
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @dynamic_filters = ] 'dynamic_filters' ]
[ , [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' ]
[ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] 'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] 'post_snapshot_script' ]
[ , [ @compress_snapshot = ] 'compress_snapshot' ]
[ , [ @ftp_address = ] 'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
[ , [ @ftp_login = ] 'ftp_login' ]
[ , [ @ftp_password = ] 'ftp_password' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @keep_partition_changes = ] 'keep_partition_changes' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ]
[ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @max_concurrent_merge = ] maximum_concurrent_merge ]
[ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
[ , [ @use_partition_groups = ] 'use_partition_groups' ]
[ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ]
[ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ]
[ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
[ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
[ , [ @retention_period_unit = ] 'retention_period_unit' ]
[ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
[ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
[ , [ @conflict_logging = ] 'conflict_logging' ]
引数
[ @publication = ] 'publication'
作成するマージ パブリケーションの名前を指定します。 publication は sysname で、既定値はなく、キーワード ALL にすることはできません。 パブリケーションの名前は、データベース内で一意である必要があります。
[ @description = ] 'description'
パブリケーションの説明です。 description は nvarchar(255)で、既定値は NULL です。
[ @retention = ] retention
特定のパブリケーションの変更を保存する保持期間を保持期間単位で指定 します。 retention は int で、既定値は 14 ユニットです。 保持期間の単位は 、retention_period_unitによって定義されます。 保有期間内にサブスクリプションが同期されず、受信した保留中の変更がディストリビューター側でクリーンアップ操作によって削除された場合、サブスクリプションは有効期限切れとなり、再初期化する必要があります。 最大保持期間は、9999 年 12 月 31 日から現在の日付までの日数です。
注意
マージ パブリケーションの保持期間には、サブスクライバーが異なるタイム ゾーンに対応するために 24 時間の猶予期間があります。 たとえば、保有期間を 1 日に設定した場合、実際の保有期間は 48 時間となります。
[ @sync_mode = ] 'sync_mode'
パブリケーションへのサブスクライバーの初期同期のモードです。 sync_mode は nvarchar(10)であり、次のいずれかの値を指定できます。
値 | [説明] |
---|---|
native (既定値) | すべてのテーブルのネイティブ モードの一括コピー プログラム出力を生成します。 |
character | すべてのテーブルの文字モードの一括コピー プログラム出力を生成します。 Microsoft SQL Server CompactサブスクライバーとSQL Server以外のサブスクライバーをサポートするために必要です。 |
[ @allow_push = ] 'allow_push'
指定されたパブリケーションに対してプッシュ サブスクリプションを作成できるかどうかを指定します。 allow_push は nvarchar(5)で、既定値は TRUE で、パブリケーションでプッシュ サブスクリプションを許可します。
[ @allow_pull = ] 'allow_pull'
特定のパブリケーションに対してプル サブスクリプションを作成できるかどうかを指定します。 allow_pull は nvarchar(5)で、既定値は TRUE で、パブリケーションでプル サブスクリプションを使用できます。 サブスクライバーをサポートするには、true SQL Server Compact指定する必要があります。
[ @allow_anonymous = ] 'allow_anonymous'
特定のパブリケーションに対して匿名サブスクリプションを作成できるかどうかを指定します。 allow_anonymous は nvarchar(5)で、既定値は TRUE で、パブリケーションで匿名サブスクリプションを許可します。 サブスクライバー SQL Server Compactサポートするには、true を指定する必要があります。
[ @enabled_for_internet = ] 'enabled_for_internet'
パブリケーションがインターネットに対して有効かどうかを指定し、ファイル転送プロトコル (FTP) を使用してスナップショット ファイルをサブスクライバーに転送できるかどうかを決定します。 enabled_for_internet は nvarchar(5)で、既定値は FALSE です。 true の場合、パブリケーションの同期ファイルは C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp ディレクトリに格納されます。 ユーザーは Ftp ディレクトリを作成する必要があります。 false の場合、パブリケーションはインターネット アクセスに対して有効になっていません。
[ @centralized_conflicts = ] 'centralized_conflicts'
このパラメーターは非推奨とされており、スクリプトの下位互換性のためにのみサポートされています。 conflict_loggingを使用して、競合レコードが格納される場所を指定します。
[ @dynamic_filters = ] 'dynamic_filters'
マージ パブリケーションでパラメーター化された行フィルターを使用できるようにします。 dynamic_filters は nvarchar(5)、既定値は FALSE です。
注意
このパラメーターを指定するのではなく、パラメーター化された行フィルターが使用されているかどうかをSQL Serverが自動的に判断できるようにします。 dynamic_filtersに true の値を指定する場合は、アーティクルのパラメーター化された行フィルターを定義する必要があります。 詳しくは、「 マージ アーティクルのパラメーター化された行フィルターの定義および変更」をご覧ください。
[ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
スナップショット ファイルを既定のフォルダーに格納するかどうかを指定します。 snapshot_in_default_folder は nvarchar(5)で、既定値は TRUE です。 true の場合、スナップショット ファイルは既定のフォルダーにあります。 false の場合、スナップショット ファイルは、alternate_snapshot_folderで指定された別の場所に格納されます。 別の場所は、別のサーバー、ネットワーク ドライブ、またはリムーバブル メディア (CD-ROM やリムーバブル ディスクなど) に配置できます。 後でサブスクライバーが取得できるように、スナップショット ファイルをファイル転送プロトコル (FTP) サイトに保存することもできます。 このパラメーターは true にすることができ、引き続き alt_snapshot_folder で指定された場所を持つことに注意してください。 この組み合わせにより、スナップショット ファイルが既定の場所と別の場所の両方に格納されます。
[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
スナップショットの代替フォルダーの場所を指定します。 alternate_snapshot_folder は nvarchar(255)で、既定値は NULL です。
[ @pre_snapshot_script = ] 'pre_snapshot_script'
.sql ファイルの場所へのポインターを指定します。 pre_snapshot_script は nvarchar(255)、既定値は NULL です。 マージ エージェントは、サブスクライバーでスナップショットを適用するときに、レプリケートされたオブジェクト スクリプトより前に、プリスナップショット スクリプトを実行します。 スクリプトは、サブスクリプション データベースに接続するときにマージ エージェントによって使用されるセキュリティ コンテキストで実行されます。 スナップショット前スクリプトは、SQL Server Compactサブスクライバーでは実行されません。
[ @post_snapshot_script = ] 'post_snapshot_script'
.sql ファイルの場所へのポインターを指定します。 post_snapshot_script は nvarchar(255)で、既定値は NULL です。 最初の同期のときに、マージ エージェントは、他のすべてのレプリケートされたオブジェクト スクリプトとデータが適用された後に、ポストスナップショット スクリプトを実行します。 スクリプトは、サブスクリプション データベースに接続するときにマージ エージェントによって使用されるセキュリティ コンテキストで実行されます。 スナップショット後のスクリプトは、SQL Server Compactサブスクライバーでは実行されません。
[ @compress_snapshot = ] 'compress_snapshot'
@alt_snapshot_folderの場所に書き込まれたスナップショットを Microsoft CAB 形式に圧縮することを指定します。 compress_snapshot は nvarchar(5)で、既定値は FALSE です。 false は 、スナップショットを圧縮しないことを指定します。 true は 、スナップショットを圧縮することを指定します。 2 GB より大きいスナップショット ファイルは圧縮できません。 圧縮されたスナップショット ファイルは、マージ エージェントが実行されている場所で解凍されます。一般にプル サブスクリプションでは、サブスクライバーでファイルが解凍されるように、圧縮されたスナップショットが使用されます。 既定のフォルダー内のスナップショットは圧縮できません。 サブスクライバー SQL Server Compactサポートするには、false を指定する必要があります。
[ @ftp_address = ] 'ftp_address'
ディストリビューターの FTP サービスのネットワーク アドレスです。 ftp_address は sysname で、既定値は NULL です。 サブスクライバーのマージ エージェントが取得するパブリケーション スナップショット ファイルの場所を指定します。 このプロパティはパブリケーションごとに格納されるため、各パブリケーションに異なる ftp_addressを設定できます。 パブリケーションでは、FTP を使用したスナップショットの伝達がサポートされている必要があります。
[ @ftp_port = ] ftp_port
ディストリビューターの FTP サービスのポート番号を指定します。 ftp_port は int で、既定値は 21 です。 サブスクライバーのマージ エージェントが検索するパブリケーション スナップショット ファイルの場所を指定します。 このプロパティはパブリケーションごとに格納されるため、各パブリケーションには独自の ftp_portを設定できます。
[ @ftp_subdirectory = ] 'ftp_subdirectory'
パブリケーションで FTP を使用したスナップショットの伝達がサポートされている場合に、サブスクライバーのマージ エージェントがスナップショット ファイルを取得できる場所を指定します。 ftp_subdirectory は nvarchar(255)、既定値は NULL です。 このプロパティはパブリケーションごとに格納されるため、各パブリケーションは独自の ftp_subdirctory を持つことも、NULL 値で示されるサブディレクトリを持たないことを選択することもできます。
パラメーター化されたフィルターを使用してパブリケーションのスナップショットを事前に生成する場合は、各サブスクライバー パーティションのデータ スナップショットが独自のフォルダーに存在する必要があります。 FTP を使用して事前に生成されたスナップショットのディレクトリ構造は、次の構造に従う必要があります。
alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID。
注意
上記の斜体の値は、パブリケーションとサブスクライバー パーティションの詳細によって異なります。
[ @ftp_login = ] 'ftp_login'
FTP サービスへの接続に使用されるユーザー名です。 ftp_login は sysname で、既定値は 'anonymous' です。
[ @ftp_password = ] 'ftp_password'
FTP サービスへの接続に使用されるユーザー パスワードです。 ftp_password は sysname で、既定値は NULL です。
重要
空白のパスワードは使用しないでください。 強力なパスワードを使用してください。
[ @conflict_retention = ] conflict_retention
競合が保持される保持期間を日数で指定します。 conflict_retention は int で、競合テーブルから競合行が消去されるまでの既定値は 14 日前です。
[ @keep_partition_changes = ] 'keep_partition_changes'
事前計算済みパーティションを使用できない場合にパーティション変更の最適化を有効にするかどうかを指定します。 keep_partition_changes は nvarchar(5)で、既定値は TRUE です。 false は、パーティションの変更が最適化されていないことを意味し、事前計算済みパーティションが使用されていない場合、パーティション内のデータが変更されたときに、すべてのサブスクライバーに送信されるパーティションが検証されます。 true は 、パーティションの変更が最適化され、変更されたパーティションに行があるサブスクライバーのみが影響を受けます。 事前計算済みパーティションを使用する場合は、use_partition_groupsを true に設定し、keep_partition_changesを false に設定します。 詳細については、「事前計算済みパーティションによるパラメーター化されたフィルターのパフォーマンス最適化」を参照してください。
注意
keep_partition_changesに true の値を指定する場合は、スナップショット エージェント パラメーター -MaxNetworkOptimization に値 1 を指定します。 このパラメーターの詳細については、「レプリケーション スナップショット エージェント」を参照してください。 エージェント パラメーターを指定する方法については、「 レプリケーション エージェントの管理」を参照してください。
SQL Server Compactサブスクライバーでは、削除が正しく反映されるように、keep_partition_changesを true に設定する必要があります。 false に設定すると、サブスクライバーに予想よりも多くの行が含まれる場合があります。
[ @allow_subscription_copy = ] 'allow_subscription_copy'
このパブリケーションをサブスクライブするサブスクリプション データベースをコピーする機能を有効または無効にします。 allow_subscription_copy は nvarchar(5)、既定値は FALSE です。 コピーするサブスクリプション データベースのサイズは、2 ギガバイト (GB) 未満である必要があります。
[ @allow_synctoalternate = ] 'allow_synctoalternate'
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
[ @validate_subscriber_info = ] 'validate_subscriber_info'
パラメーター化された行フィルターを使用するときにパブリッシュされたデータのサブスクライバー パーティションを定義するために使用される関数を一覧表示します。 validate_subscriber_info は nvarchar(500)、既定値は NULL です。 この情報は、マージ エージェントがサブスクライバーのパーティションを検証するときに使用されます。 たとえば、パラメーター化された行フィルターで SUSER_SNAME を使用する場合、パラメーターは にする @validate_subscriber_info=N'SUSER_SNAME()'
必要があります。
注意
このパラメーターを指定するのではなく、SQL Serverがフィルター条件を自動的に決定できるようにします。
[ @add_to_active_directory = ] 'add_to_active_directory'
このパラメーターは非推奨とされており、スクリプトの下位互換性のためにのみサポートされています。 Microsoft Active Directory にパブリケーション情報を追加できなくなります。
[ @max_concurrent_merge = ] maximum_concurrent_merge
同時実行マージ プロセスの最大数。 maximum_concurrent_mergeは int で、既定値は 0 です。 このプロパティの値 が 0 の場合、特定の時点で実行される同時マージ プロセスの数に制限がないことを意味します。 このプロパティは、マージ パブリケーションに対して同時に実行できる同時マージ プロセスの数に制限を設定します。 同時にスケジュールに組み込まれているマージ処理の数が、指定された実行可能な数より大きい場合、余分なジョブは待ち行列に挿入され、現在実行されているマージ処理が終わるまで待機状態に置かれます。
[ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots
サブスクライバー パーティションのフィルター処理されたデータ スナップショットを生成するために同時に実行できるスナップショット エージェント セッションの最大数。 maximum_concurrent_dynamic_snapshotsは int で、既定値は 0 です。 0 の場合、スナップショット セッション数に制限はありません。 同時にスケジュールに組み込まれているスナップショット処理の数が、指定された実行可能な数より大きい場合、余分なジョブは待ち行列に挿入され、現在実行されているスナップショット処理が終わるまで待機状態に置かれます。
[ @use_partition_groups = ] 'use_partition_groups'
事前計算済みパーティションを使用して同期プロセスを最適化することを指定します。 use_partition_groups は nvarchar(5)であり、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
true | パブリケーションは事前計算済みパーティションを使用します。 |
false | パブリケーションでは、事前計算済みパーティションは使用されません。 |
NULL(既定値) | システムがパーティション分割ストラテジを決定します。 |
既定では、事前計算済みパーティションが使用されます。 事前計算済みパーティションを使用しないようにするには、 use_partition_groups を false に設定する必要があります。 NULL の場合、事前計算済みパーティションを使用できるかどうかをシステムが決定します。 事前計算済みパーティションを使用できない場合、この値は実質的に false になり、エラーは生成されません。 このような場合は、 keep_partition_changes を true に設定して、最適化を行うことができます。 詳細については、「 パラメーター化された行フィルター 」および「 事前計算済みパーティションを使用したパラメーター化フィルターのパフォーマンスの最適化」を参照してください。
[ @publication_compatibility_level = ] backward_comp_level
パブリケーションの下位互換性を示します。 backward_comp_level は nvarchar(6)であり、次のいずれかの値を指定できます。
値 | バージョン |
---|---|
90RTM | SQL Server 2005 (9.x) |
100RTM | SQL Server 2008 (10.0.x) |
[ @replicate_ddl = ] replicate_ddl
パブリケーションでスキーマ レプリケーションがサポートされているかどうかを示します。 replicate_ddlは int で、既定値は 1 です。 1 は、パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、 0 は DDL ステートメントがレプリケートされないことを示します。 詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。
@REPLICATE_DDL パラメーターは、DDL ステートメントが列を追加するときに受け入れられます。 DDL ステートメントが次の理由で列を変更または削除すると、 @replicate_ddl パラメーターは無視されます。
列が削除される場合は、sysarticlecolumns を更新して、新しい DML ステートメントに削除された列が含まれないようにする必要があります。そうしないと、ディストリビューション エージェントが失敗する原因となります。 レプリケーションでは常にスキーマ変更をレプリケートする必要があるため、 @replicate_ddl パラメーターは無視されます。
列が変更されると、ソース データ型または null 値の許容が変更され、DML ステートメントにサブスクライバーのテーブルと互換性がない可能性がある値が含まれている可能性があります。 そうした DML ステートメントは、ディストリビューション エージェントが失敗する原因となる場合があります。 レプリケーションでは常にスキーマ変更をレプリケートする必要があるため、 @replicate_ddl パラメーターは無視されます。
DDL ステートメントによって新しい列が追加される場合、新しい列は sysarticlecolumns に含まれません。 DML ステートメントは、新しい列のデータのレプリケートを試みません。 パラメーターは、DDL のレプリケートまたはレプリケートを行わないかのどちらかが許容されるため、受け入れられます。
[ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot'
このパブリケーションのサブスクライバーが、データ パーティションのフィルター処理されたスナップショットを生成するスナップショット プロセスを開始できるかどうかを示します。 allow_subscriber_initiated_snapshot は nvarchar(5)で、既定値は FALSE です。 true は 、サブスクライバーがスナップショット プロセスを開始できることを示します。
[ @allow_web_synchronization = ] 'allow_web_synchronization'
パブリケーションが Web 同期に対して有効かどうかを指定します。 allow_web_synchronization は nvarchar(5)で、既定値は FALSE です。 true は 、このパブリケーションのサブスクリプションを HTTPS 経由で同期できることを指定します。 詳細については、 マージ レプリケーションの Web 同期」を参照してください 。 サブスクライバー SQL Server Compactサポートするには、true を指定する必要があります。
[ @web_synchronization_url = ] 'web_synchronization_url'
Web 同期に使用されるインターネット URL の既定値を指定します。 web_synchronization_url is nvarchar(500)、既定値は NULL です。 sp_addmergepullsubscription_agentの実行時に既定のインターネット URL が明示的に設定されていない場合に定義します。
[ @allow_partition_realignment = ] 'allow_partition_realignment'
パブリッシャーの行の変更によってパーティションが変更されたときに、削除がサブスクライバーに送信されるかどうかを判断します。 allow_partition_realignment は nvarchar(5)で、既定値は TRUE です。 true は 、サブスクライバーのパーティションに含まれないデータを削除することで、パーティション変更の結果を反映するためにサブスクライバーに削除を送信します。 false を指定 すると、サブスクライバー上の古いパーティションからデータが残されます。この場合、パブリッシャーでこのデータに加えられた変更はこのサブスクライバーにレプリケートされませんが、サブスクライバーで行われた変更はパブリッシャーにレプリケートされます。 allow_partition_realignmentを false に設定すると、履歴目的でデータにアクセスできる必要がある場合に、古いパーティションからサブスクリプション内のデータを保持できます。
注意
allow_partition_realignmentを false に設定した結果としてサブスクライバーに残っているデータは、読み取り専用であるかのように扱う必要があります。ただし、これはレプリケーション システムによって適用されません。
[ @retention_period_unit = ] 'retention_period_unit'
保持期間によって設定される保持期間の単位を指定します。 retention_period_unit は nvarchar(10)で、次のいずれかの値を指定できます。
値 | バージョン |
---|---|
day (既定値) | 保有期間は日数で指定します。 |
week | 保持期間は週単位で指定されます。 |
month | 保有期間は月単位で指定されます。 |
year | 保有期間は年単位で指定されます。 |
[ @generation_leveling_threshold = ] generation_leveling_threshold
世代に含まれる変更の数を指定します。 生成とは、パブリッシャーまたはサブスクライバーに配信される変更のコレクションです。 generation_leveling_threshold は int で、既定値は 1000 です。
[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy
パブリケーションへの変更で必要な自動再初期化の前にサブスクライバーから変更をアップロードするかどうかを指定します。ここで、@force_reinit_subscriptionの値は 1 です。 automatic_reinitialization_policy はビットであり、既定値は 0 です。 1 は、自動再初期化が行われる前にサブスクライバーから変更がアップロードされることを意味します。
重要
パラメーター化フィルターを追加、削除、変更する場合は、再初期化の際、サブスクライバーで保留中の変更をパブリッシャーにアップロードできません。 保留中の変更をアップロードしたい場合は、フィルターを変更する前にすべてのサブスクリプションを同期してください。
[ @conflict_logging = ] 'conflict_logging'
競合レコードを格納する場所を指定します。 conflict_logging は nvarchar(15)で、次のいずれかの値を指定できます。
値 | [説明] |
---|---|
publisher | 競合レコードはパブリッシャーに格納されます。 |
サブスクライバー | 競合レコードは、競合の原因となったサブスクライバーに保存されます。 SQL Server Compact サブスクライバーではサポートされていません。 |
両方 | 競合レコードは、パブリッシャーとサブスクライバーの両方に保存されます。 |
NULL (既定値) | レプリケーションでは、値backward_comp_levelが 90RTMの場合はconflict_logging が自動的に に設定され、それ以外のすべての場合はパブリッシャーに設定されます。 |
リターン コードの値
0 (成功) または 1 (失敗)
解説
sp_addmergepublication はマージ レプリケーションで使用されます。
@add_to_active_directory パラメーターを使用して Active Directory にパブリケーション オブジェクトを一覧表示するには、SQL Server オブジェクトが Active Directory に既に作成されている必要があります。
同じデータベース オブジェクトをパブリッシュするパブリケーションが複数存在する場合は、 replicate_ddl 値 が 1 のパブリケーションのみが ALTER TABLE、ALTER VIEW、ALTER PROCEDURE、ALTER FUNCTION、ALTER TRIGGER DDL ステートメントをレプリケートします。 ただし、ALTER TABLE DROP COLUMN DDL ステートメントは、削除された列を発行するすべてのパブリケーションによってレプリケートされます。
SQL Server Compact サブスクライバーの場合、alternate_snapshot_folder の値は、snapshot_in_default_folderの値が false の場合にのみ使用されます。
パブリケーションに対して DDL レプリケーションが有効 (replicate_ddl=1) の場合、パブリケーションに対して非レプリケート DDL 変更を行うには、まず sp_changemergepublication (Transact-SQL) を実行してreplicate_ddlを 0 に設定する必要があります。 レプリケートされていない DDL ステートメントが発行されたら、 sp_changemergepublication を再度実行して DDL レプリケーションを有効に戻すことができます。
例
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. 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".
--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @login = $(Login);
SET @password = $(Password);
-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'merge publish',
@value = N'true'
-- Create a new merge publication, explicitly setting the defaults.
USE [AdventureWorks2012]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2012.',
@publication_compatibility_level = N'120RTM';
-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
GO
アクセス許可
sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーのみがsp_addmergepublication実行できます。
参照
パブリケーションを作成する
データとデータベース オブジェクトのパブリッシュ
sp_changemergepublication (Transact-SQL)
sp_dropmergepublication (Transact-SQL)
sp_helpmergepublication (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)