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 (既定値)
MicrosoftSQL 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 パブリッシャに対してはサポートされていません。*詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。[ [ @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 固定データベース ロールのメンバだけです。
関連項目