sp_addpublication (Transact-SQL)
スナップショット パブリケーションまたはトランザクション パブリケーションを作成します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。
構文
sp_addpublication [ @publication = ] 'publication'
[ , [ @taskid = ] tasked ]
[ , [ @restricted = ] 'restricted' ]
[ , [ @sync_method = ] 'sync_method' ]
[ , [ @repl_freq = ] 'repl_freq' ]
[ , [ @description = ] 'description' ]
[ , [ @status = ] 'status' ]
[ , [ @independent_agent = ] 'independent_agent' ]
[ , [ @immediate_sync = ] 'immediate_sync' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @allow_push = ] 'allow_push'
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
[ , [ @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' ]
[ , [ @allow_dts = ] 'allow_dts' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @conflict_policy = ] 'conflict_policy' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] 'queue_type' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @logreader_job_name = ] 'logreader_agent_name' ]
[ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id
[ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
[ , [ @allow_partition_switch = ] 'allow_partition_switch'
[ , [ @replicate_partition_switch = ]'replicate_partition_switch'
引数
[ @publication=] 'publication'
作成するパブリケーションの名前を指定します。 publication のデータ型は sysname で、既定値はありません。 この名前は、データベース内で一意であることが必要です。[ @taskid=] taskid
旧バージョンとの互換性のためにのみサポートされています。sp_addpublication_snapshot (Transact-SQL) を使用してください。[ @restricted=] 'restricted'
旧バージョンとの互換性のためにのみサポートされています。default_access を使用してください。[ @sync_method=] 'sync_method**'**
同期モードを指定します。 sync_method のデータ型は nvarchar(13) で、次のいずれかの値を指定できます。値
説明
native
すべてのテーブルのネイティブ モード BCP 出力を作成する。 Oracle パブリッシャーに対してはサポートされていません。
character
すべてのテーブルのキャラクタモード BCP 出力を作成する。 Oracle パブリッシャーの場合、character はスナップショット レプリケーションでのみ有効です。
concurrent
すべてのテーブルのネイティブ モード BCP 出力を作成するが、スナップショット中はテーブルをロックしない。 トランザクション パブリケーションでのみサポートされます。 Oracle パブリッシャーに対してはサポートされていません。
concurrent_c
すべてのテーブルのキャラクタモードの BCP 出力を作成するが、スナップショット中はテーブルをロックしない。 トランザクション パブリケーションでのみサポートされます。
database snapshot
データベース スナップショットから、すべてのテーブルのネイティブ モードの一括コピー プログラム出力を作成します。 データベース スナップショットは、Microsoft SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションがサポートする機能」を参照してください。
database snapshot character
データベース スナップショットから、すべてのテーブルのキャラクター モードの一括コピー プログラム出力を作成します。 データベース スナップショットは、Microsoft SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションがサポートする機能」を参照してください。
NULL (既定値)
Microsoft SQL Server パブリッシャーの場合、既定値は native です。 SQL Server 以外のパブリッシャーの場合で、repl_freq の値が Snapshot の場合、既定値は character になり、その他の場合、既定値は concurrent_c になります。
[ @repl_freq=] 'repl_freq'
レプリケーション周期の種類を指定します。repl_freq のデータ型は nvarchar(10) で、次のいずれかの値を指定できます。値
説明
continuous (既定値)
すべてのログベースのトランザクションの出力をパブリッシュする。 SQL Server 以外のパブリッシャーの場合は、sync_method を concurrent_c に設定する必要があります。
snapshot
スケジュールされた同期イベントのみをパブリッシュする。 SQL Server 以外のパブリッシャーの場合は、sync_method を character に設定する必要があります。
[ @description=] 'description'
パブリケーションに関する説明を指定します (省略可能)。 description のデータ型は nvarchar(255) で、既定値は NULL です。[ @status=] 'status'
パブリケーション データを使用できるかどうかを指定します。 status のデータ型は nvarchar(8) で、次のいずれかの値を指定できます。値
説明
active
サブスクライバーでパブリケーション データを直ちに使用できる。
inactive (既定値)
パブリケーションが最初に作成されたときは、サブスクライバーでパブリケーション データを使用できない (サブスクライブすることはできますが、サブスクリプションは処理されません)。
Oracle パブリッシャーに対してはサポートされていません。
[ @independent_agent=] 'independent_agent'
このパブリケーションに対して、スタンドアロン ディストリビューション エージェントが存在するかどうかを指定します。 independent_agent のデータ型は nvarchar(5) で、既定値は FALSE です。 値が true の場合は、このパブリケーションに対して、単独のディストリビューション エージェントが存在することを示します。 false の場合、パブリケーションでは共有ディストリビューション エージェントが使用され、パブリッシャー データベース/サブスクライバー データベースの各組では単一の共有エージェントが保持されます。[ @immediate_sync=] 'immediate_synchronization'
スナップショット エージェントが実行されるたびに、パブリケーションに対して同期ファイルが作成されるかどうかを指定します。 immediate_synchronization のデータ型は nvarchar(5) で、既定値は FALSE です。 値が true の場合、スナップショット エージェントを実行するたびに、同期ファイルが作成または再作成されます。 サブスクリプションが作成される前にスナップショット エージェントが完了していれば、サブスクライバーでは直ちに同期ファイルを取得できます。 新しいサブスクリプションは、最近実行されたスナップショット エージェントによって生成された最新の同期ファイルを取得します。 immediate_synchronization が true の場合は、independent_agent を true にする必要があります。 false の場合、新しいサブスクリプションがある場合にだけ、同期ファイルが作成されます。 既存のパブリケーションに新しいアーティクルを増分追加する場合は、サブスクリプションごとに sp_addsubscription を呼び出す必要があります。 サブスクリプションの後、スナップショット エージェントが起動して完了するまでは、サブスクライバーでは同期ファイルを取得できません。[ @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 ディレクトリを作成する必要があります。[ @allow_push=] 'allow_push'
特定のパブリケーションに対して、プッシュ サブスクリプションを作成できるかどうかを指定します。 allow_push のデータ型は nvarchar(5) で、既定値は TRUE です。TRUE の場合、パブリケーションに対してプッシュ サブスクリプションを作成できます。[ @allow_pull=] 'allow_pull'
特定のパブリケーションに対して、プル サブスクリプションを作成できるかどうかを指定します。 allow_pull のデータ型は nvarchar(5) で、既定値は FALSE です。 false の場合、パブリケーションに対してプル サブスクリプションは作成できません。[ @allow_anonymous=] 'allow_anonymous'
特定のパブリケーションに対して、匿名サブスクリプションを作成できるかどうかを指定します。 allow_anonymous のデータ型は nvarchar(5) で、既定値は FALSE です。 値が true の場合は、immediate_synchronization も true に設定する必要があります。 false の場合、パブリケーションに対して匿名サブスクリプションは作成できません。[ @allow_sync_tran=] 'allow_sync_tran'
パブリケーションでサブスクリプションの即時更新を許可するかどうかを指定します。 allow_sync_tran のデータ型は nvarchar(5) で、既定値は FALSE です。 Oracle パブリッシャーに対しては true がサポートされません。[ @autogen_sync_procs=] 'autogen_sync_procs'
更新サブスクリプションの同期ストアド プロシージャがパブリッシャーで生成されるかどうかを指定します。 autogen_sync_procs のデータ型は nvarchar(5) で、次のいずれかの値を指定できます。値
説明
true
更新サブスクリプションが有効の場合、自動的に生成される。
false
更新サブスクリプションが無効の場合、または Oracle パブリッシャーの場合、自動的に生成される。
NULL (既定値)
更新サブスクリプションが有効の場合、既定値は true になり、更新サブスクリプションが無効の場合、既定値は false になります。
注 autogen_sync_procsに対してユーザーが指定した値は、allow_queued_tran と allow_sync_tran に指定された値に応じて、他の値に代替されます。
[ @retention=] retention
サブスクリプション処理の保有期間を時間数で指定します。 retention のデータ型は int で、既定値は 336 時間です。 サブスクリプションは、保有期間内に非アクティブになると、期限切れとなって削除されます。 この値には、パブリッシャーによって使用されるディストリビューション データベースの最大保有期間を上回る値を指定することもできます。 0 を指定した場合、パブリケーションへの既知のサブスクリプションは期限切れとならず、期限切れサブスクリプション クリーンアップ エージェントによって削除されることもありません。[ @allow_queued_tran= ] 'allow_queued_updating'
変更をパブリッシャーに適用できるようになるまで、サブスクライバーでの変更のキュー登録を有効または無効にします。 allow_queued_updating のデータ型は nvarchar(5) で、既定値は FALSE です。 false の場合、サブスクライバーでの変更はキュー登録されません。 Oracle パブリッシャーに対しては 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 です。 ディストリビューション エージェントでは、サブスクライバーでスナップショットが適用されるとき、レプリケートされたオブジェクト スクリプトよりも前に、プリスナップショット スクリプトが実行されます。 このスクリプトは、サブスクリプション データベースへの接続時にディストリビューション エージェントによって使用されるセキュリティ コンテキストで実行されます。[ @post_snapshot_script= ] 'post_snapshot_script'
.sql ファイルの場所を指すポインターを指定します。 post_snapshot_script のデータ型は nvarchar(255) で、既定値は NULL です。 最初の同期時、ディストリビューション エージェントでは、他のすべてのレプリケートされたオブジェクト スクリプトとデータが適用された後、ポスト スナップショット スクリプトが実行されます。 このスクリプトは、サブスクリプション データベースへの接続時にディストリビューション エージェントによって使用されるセキュリティ コンテキストで実行されます。[ @compress_snapshot= ] 'compress_snapshot'
@alt_snapshot_folder の場所に書き込まれたスナップショットを Microsoft CAB 形式で圧縮するかどうかを示します。 compress_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。 false を指定した場合、スナップショットは圧縮されません。true を指定した場合、スナップショットは圧縮されます。 2 GB を超えるスナップショット ファイルは圧縮できません。 圧縮されたスナップショット ファイルは、ディストリビューション エージェントが実行される場所に展開されます。プル サブスクリプションでは通常、ファイルがサブスクライバーで展開されるよう、圧縮されたスナップショットが使用されます。 既定のフォルダー内のスナップショットは圧縮できません。[ @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_login = ] 'ftp_login'
FTP サービスに接続するときに使用するユーザー名です。 ftp_login のデータ型は sysname で、既定値は ANONYMOUS です。[ @ftp_password = ] 'ftp_password'
FTP サービスに接続するときに使用するユーザー パスワードです。 ftp_password のデータ型は sysname で、既定値は NULL です。[ @allow_dts = ] 'allow_dts'
パブリケーションでデータを変換できるかどうかを指定します。 サブスクリプションを作成するときに DTS パッケージを指定できます。 allow_transformable_subscriptions のデータ型は nvarchar(5) で、既定値は FALSE です。既定値では DTS 変換が許可されません。 allow_dts が true の場合は、sync_method を character または concurrent_c に設定する必要があります。true は Oracle パブリッシャーに対してはサポートされていません。
[ @allow_subscription_copy = ] 'allow_subscription_copy'
このパブリケーションにサブスクライブするサブスクリプション データベースをコピーする機能を有効または無効にします。 allow_subscription_copy のデータ型は nvarchar(5) で、既定値は FALSE です。[ @conflict_policy = ] 'conflict_policy'
キュー更新サブスクライバー オプションを使用するときの競合の解決方法。 conflict_policy のデータ型は nvarchar(100) で、既定値は NULL です。次のいずれかの値を指定できます。値
説明
pub wins
パブリッシャーを優先。
sub reinit
サブスクライバーを再初期化。
sub wins
サブスクライバーを優先。
NULL (既定値)
パブリケーションがスナップショット パブリケーションの場合に NULL を指定すると、既定の解決方法は sub reinit になります。 パブリケーションがスナップショット パブリケーション以外の場合に NULL を指定すると、既定の解決方法は pub wins になります。
Oracle パブリッシャーに対してはサポートされていません。
[ @centralized_conflicts = ] 'centralized_conflicts'
パブリッシャーに競合レコードを格納するかどうかを指定します。 centralized_conflicts のデータ型は nvarchar(5) で、既定値は TRUE です。 true を指定した場合、競合レコードはパブリッシャーに格納されます。 false を指定した場合、競合レコードは、競合の原因となったパブリッシャーとサブスクライバーの両方に格納されます。 Oracle パブリッシャーに対してはサポートされていません。[ @conflict_retention = ] conflict_retention
競合の保有期間の日数を指定します。 これは、ピア ツー ピア トランザクション レプリケーションおよびキュー更新サブスクリプションの競合メタデータが格納される期間です。 conflict_retention のデータ型は int で、既定値は 14 です。 Oracle パブリッシャーに対してはサポートされていません。[ @queue_type = ] 'queue_type'
使用されるキューの種類。 queue_type のデータ型は nvarchar(10) で、既定値は NULL です。次のいずれかの値を指定できます。値
説明
sql
トランザクションの保存に SQL Server を使用。
NULL (既定値)
既定値 sql を使用。SQL Server を使用してトランザクションを保存します。
注 Microsoft Message Queuing (MSMQ) の使用は現在サポートされていません。 値 msmq を指定すると、警告が発生し、レプリケーションは自動的に値 sql に設定されます。
Oracle パブリッシャーに対してはサポートされていません。
[ @add_to_active_directory = ] 'add_to_active_directory'
このパラメーターは、旧バージョンのスクリプトとの互換性を保つために用意されており、使用は推奨されません。 現在、Microsoft Active Directory にはパブリケーション情報を追加できません。[ @logreader_job_name = ] 'logreader_agent_name'
既存のエージェント ジョブの名前を指定します。 logreader_agent_name のデータ型は sysname で、既定値は NULL です。 このパラメーターは、ログ リーダー エージェントで、新しく作成されるジョブではなく既存のジョブが使用される場合にのみ指定します。[ @qreader_job_name = ] 'queue_reader_agent_name'
既存のエージェント ジョブの名前を指定します。 queue_reader_agent_name のデータ型は sysname で、既定値は NULL です。 このパラメーターは、キュー リーダー エージェントで、新しく作成されるジョブではなく既存のジョブが使用される場合にのみ指定します。[ @publisher = ] 'publisher'
SQL Server 以外のパブリッシャーを指定します。 publisher のデータ型は sysname で、既定値は NULL です。注 SQL Server パブリッシャーにパブリケーションを追加する場合は、publisher は使用しないでください。
[ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
サブスクライバーでは、最初のスナップショットではなくバックアップから、このパブリケーションへのサブスクリプションを初期化できるかどうかを示します。 allow_initialize_from_backup のデータ型は nvarchar(5) で、次のいずれかの値を指定できます。値
説明
true
バックアップからの初期化を有効にする。
false
バックアップからの初期化を無効にする。
NULL (既定値)
ピア ツー ピア レプリケーション トポロジのパブリケーションの場合、既定値は true になり、他のパブリケーションの場合、既定値は false になります。
詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」を参照してください。
注意 サブスクライバー データの欠落を回避するために、sp_addpublication で @allow_initialize_from_backup = N'true' を使用する場合は、常に @immediate_sync = N'true' を使用します。
[ @replicate_ddl = ] replicate_ddl
スキーマ レプリケーションがパブリケーションに対してサポートされているかどうかを示します。 replicate_ddl のデータ型は int で、既定値は、SQL Server パブリッシャーでは 1、SQL Server 以外のパブリッシャーでは 0 です。 1 は、パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、0 は、DDL ステートメントがレプリケートされないことを示します。 *スキーマのレプリケーションは、Oracle パブリッシャーに対してはサポートされていません。*詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。DDL ステートメントによって列が追加される場合、@replicate_ddl パラメーターは有効になります。 次の理由により、DDL ステートメントによって列が変更または削除される場合、@replicate_ddl パラメーターは無視されます。
列が削除される場合は、sysarticlecolumns を更新して、新しい DML ステートメントに削除された列が含まれないようにする必要があります。そうしないと、ディストリビューション エージェントが失敗する原因となります。 レプリケーションでは常にスキーマの変更をレプリケートする必要があるため、@replicate_ddl パラメーターは無視されます。
列が変更される場合は、ソースのデータ型または NULL 値の許容属性が変更され、サブスクライバーにあるテーブルと互換性のない値が DML ステートメントに含まれる可能性があります。 そうした DML ステートメントは、ディストリビューション エージェントが失敗する原因となる場合があります。 レプリケーションでは常にスキーマの変更をレプリケートする必要があるため、@replicate_ddl パラメーターは無視されます。
DDL ステートメントによって新しい列が追加される場合、新しい列は sysarticlecolumns に含まれません。 DML ステートメントによって、新しい列のデータがレプリケートされることはありません。 DDL をレプリケートするかしないかのどちらかが許容されるため、パラメーターは有効になります。
[ @enabled_for_p2p = ] 'enabled_for_p2p'
ピア ツー ピア レプリケーション トポロジでパブリケーションを使用できるようにします。 enabled_for_p2p のデータ型は nvarchar(5) で、既定値は FALSE です。 true はパブリケーションでピア ツー ピア レプリケーションがサポートされることを示します。 enabled_for_p2p を true に設定した場合、次の制限が適用されます。allow_anonymous が false であること。
allow_dts が false であること。
allow_initialize_from_backup が true であること。
allow_queued_tran が false であること。
allow_sync_tran が false であること。
conflict_policy が false であること。
independent_agent が true であること。
repl_freq が continuous であること。
replicate_ddl が 1 であること。
詳細については、「ピア ツー ピア トランザクション レプリケーション」を参照してください。
[ @publish_local_changes_only = ] 'publish_local_changes_only'
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。[ @enabled_for_het_sub= ] 'enabled_for_het_sub'
パブリケーションで SQL Server 以外のサブスクライバーのサポートを有効にします。 enabled_for_het_sub のデータ型は nvarchar(5) で、既定値は FALSE です。 値 true は、パブリケーションで SQL Server 以外のサブスクライバーがサポートされることを示します。 enabled_for_het_sub を true に設定した場合、次の制限が適用されます。allow_initialize_from_backup が false であること。
allow_push が true であること。
allow_queued_tran が false であること。
allow_subscription_copy が false であること。
allow_sync_tran が false であること。
autogen_sync_procs が false であること。
conflict_policy が NULL であること。
enabled_for_internet が false であること。
enabled_for_p2p が false であること。
ftp_address が NULL であること。
ftp_subdirectory が NULL であること。
ftp_password が NULL であること。
pre_snapshot_script が NULL であること。
post_snapshot_script が NULL であること。
replicate_ddl が 0 であること。
qreader_job_name が NULL であること。
queue_type が NULL であること。
sync_method には、native または concurrent は指定できません。
詳細については、「SQL Server 以外のサブスクライバー」を参照してください。
[ @p2p_conflictdetection= ] 'p2p_conflictdetection'
パブリケーションでピア ツー ピア レプリケーションが有効である場合に、ディストリビューション エージェントが競合を検出できるようにします。 p2p_conflictdetection のデータ型は nvarchar(5) で、既定値は TRUE です。 詳細については、「ピア ツー ピア レプリケーションにおける競合検出」を参照してください。[ @p2p_originator_id= ] p2p_originator_id
ピア ツー ピア トポロジ内のノードの ID を指定します。 p2p_originator_id のデータ型は int で、既定値は NULL です。 p2p_conflictdetection が TRUE に設定されている場合、この ID は競合の検出に使用されます。 トポロジで使用されていないゼロ以外の正の ID を指定してください。 既に使用されている ID を確認するには、sp_help_peerconflictdetection を実行します。[ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
競合の検出後にディストリビューション エージェントで変更の処理を続行するかどうかを示します。 p2p_continue_onconflict のデータ型は nvarchar(5) で、既定値は FALSE です。注意 既定値の FALSE を使用することをお勧めします。 このオプションを TRUE に設定すると、ディストリビューション エージェントは、実行者 ID が最も大きいノードから競合する行を適用してトポロジ内のデータを収束しようとします。 この方法では収束が保証されません。 競合が検出された後に、トポロジに一貫性があることを確認する必要があります。 詳細については、「ピア ツー ピア レプリケーションにおける競合検出」の「競合の処理」を参照してください。
[ @allow_partition_switch= ] 'allow_partition_switch'
パブリッシュされたデータベースに対して ALTER TABLE ... SWITCH ステートメントを実行できるかどうかを指定します。 allow_partition_switch のデータ型は nvarchar(5) で、既定値は FALSE です。 詳細については、「パーティション テーブルとパーティション インデックスのレプリケート」を参照してください。[ @replicate_partition_switch= ] 'replicate_partition_switch'
パブリッシュされたデータベースに対して実行される ALTER TABLE ... SWITCH ステートメントをサブスクライバーにレプリケーションする必要があるかどうかを指定します。 replicate_partition_switch のデータ型は nvarchar(5) で、既定値は FALSE です。 このオプションは、allow_partition_switch が TRUE に設定されている場合にのみ有効です。
リターン コード値
0 (成功) または 1 (失敗)
説明
sp_addpublication は、スナップショット レプリケーションおよびトランザクション レプリケーションで使用します。
同じデータベース オブジェクトをパブリッシュする複数のパブリケーションが存在する場合、replicate_ddl の値が 1 のパブリケーションのみが ALTER TABLE、ALTER VIEW、ALTER PROCEDURE、ALTER FUNCTION、および ALTER TRIGGER DDL の各ステートメントをレプリケートします。 ただし、ALTER TABLE DROP COLUMN DDL ステートメントは、削除された列をパブリッシュするすべてのパブリケーションでレプリケートされます。
パブリケーションで DDL レプリケーションが有効になっている場合 (replicate_ddl = 1 の場合)、パブリケーションに対してレプリケーションなしの DDL の変更を行うには、最初に sp_changepublication を実行して、replicate_ddl を 0 に設定する必要があります。 レプリケーションなしの DDL ステートメントが実行された後で、sp_changepublication をもう一度実行して DDL レプリケーションを on に戻しておくこともできます。
使用例
-- To avoid storing the login and password in the script file, the values
-- are passed into SQLCMD as scripting variables. 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksProductTran';
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- This should be passed at runtime.
SET @password = $(Password);
-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Create a new transactional publication with the required properties.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_push = N'true',
@allow_pull = N'true',
@independent_agent = N'true';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
GO
権限
sp_addpublication を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーだけです。 Windows 認証ログインを行うには、Windows ユーザー アカウントを表すユーザー アカウントがデータベースに必要です。 Windows グループを表すユーザー アカウントでは不十分です。
関連項目
参照
sp_addlogreader_agent (Transact-SQL)
sp_addpublication_snapshot (Transact-SQL)
sp_changepublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
sp_replicationdboption (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)