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
データベース スナップショットから、すべてのテーブルのネイティブ モードの一括コピー プログラム出力を作成します。このオプションを使用するには、SQL Server Enterprise が必要です。
database snapshot character
データベース スナップショットから、すべてのテーブルのキャラクター モードの一括コピー プログラム出力を作成します。このオプションを使用するには、SQL Server Enterprise が必要です。
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 の場合、サブスクライバーでの変更はキュー登録されません。true は Oracle パブリッシャーに対してはサポートされていません。[ @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 になります。
詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」を参照してください。
[ @replicate_ddl = ] replicate_ddl
パブリケーションに対してスキーマ レプリケーションがサポートされるかどうかを指定します。replicate_ddl のデータ型は int で、既定値は、SQL Server パブリッシャーでは 1、SQL Server 以外のパブリッシャーでは 0 です。1 は、パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、0 は、DDL ステートメントがレプリケートされないことを示します。*スキーマのレプリケーションは、Oracle パブリッシャーに対してはサポートされていません。*詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。@replicate_ddl パラメーターは、DDL ステートメントで列が追加されるときに受け入れられます。@replicate_ddl パラメーターは、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'AdventureWorks2008R2';
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 固定データベース ロールのメンバーだけです。
関連項目