sp_addarticle (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
アーティクルを作成し、パブリケーションに追加します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
sp_addarticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @source_table = ] N'source_table' ]
[ , [ @destination_table = ] N'destination_table' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @type = ] N'type' ]
[ , [ @filter = ] N'filter' ]
[ , [ @sync_object = ] N'sync_object' ]
[ , [ @ins_cmd = ] N'ins_cmd' ]
[ , [ @del_cmd = ] N'del_cmd' ]
[ , [ @upd_cmd = ] N'upd_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @description = ] N'description' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @sync_object_owner = ] N'sync_object_owner' ]
[ , [ @filter_owner = ] N'filter_owner' ]
[ , [ @source_object = ] N'source_object' ]
[ , [ @artid = ] artid OUTPUT ]
[ , [ @auto_identity_range = ] N'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @use_default_datatypes = ] use_default_datatypes ]
[ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]
引数
[ @publication = ] N'publication'
アーティクルを含むパブリケーションの名前。 名前はデータベース内で一意である必要があります。 @publicationは sysname で、既定値はありません。
[ @article = ] N'article'
アーティクルの名前。 名前はパブリケーション内で一意であることが必要です。 @articleは sysname で、既定値はありません。
[ @source_table = ] N'source_table'
このパラメーターは非推奨になりました。代わりに@source_objectを使用してください。 @source_tableは nvarchar(386) で、既定値は NULL
. @source_tableは Oracle パブリッシャーではサポートされていません。
[ @destination_table = ] N'destination_table'
変換先 (サブスクリプション) テーブルの名前 (@source_tableまたはストアド プロシージャと異なる場合)。 @destination_tableは sysname で、既定値は NULL
. にNULL
設定すると、@source_tableが@destination_tableに等しいことを意味します。
[ @vertical_partition = ] N'vertical_partition'
テーブル アーティクルの列フィルター処理を有効または無効にします。 @vertical_partitionは nchar(5) で、既定値は false
.
false
は、垂直フィルター処理がないことを示し、すべての列を発行します。true
は、宣言された主キー、既定のない null 許容列、および一意のキー列を除くすべての列をクリアします。 列は、sp_articlecolumnを使用して追加されます。
[ @type = ] N'type'
アーティクルの種類。 @typeは sysname で、既定値はNULL
次のいずれかの値になります。
Value | 説明 |
---|---|
aggregate schema only |
スキーマのみを使用する集計関数。 |
func schema only |
スキーマのみの関数。 |
indexed view logbased |
ログ ベースのインデックス付きビューに関する記事。 Oracle パブリッシャーではサポートされていません。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 |
indexed view logbased manualboth |
手動フィルターと手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、@sync_objectパラメーターと @filter パラメーターの両方を指定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 |
indexed view logbased manualfilter |
手動フィルターを使用したログ ベースのインデックス付きビューアーティクル。 このオプションでは、@sync_objectパラメーターと @filter パラメーターの両方を指定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 |
indexed view logbased manualview |
手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、@sync_object パラメーターを指定する必要があります。 この種の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。 |
indexed view schema only |
スキーマのみを使用するインデックス付きビュー。 この種類の記事では、ベース テーブルも発行する必要があります。 |
logbased (既定) |
ログベースの記事。 |
logbased manualboth |
手動フィルターと手動ビューを含むログ ベースの記事。 このオプションでは、@sync_objectパラメーターと @filter パラメーターの両方を指定する必要があります。 Oracle パブリッシャーではサポートされていません。 |
logbased manualfilter |
手動フィルターを使用したログベースの記事。 このオプションでは、@sync_objectパラメーターと @filter パラメーターの両方を指定する必要があります。 Oracle パブリッシャーではサポートされていません。 |
logbased manualview |
手動ビューを使用する、ログベースのアーティクルです。 このオプションでは、@sync_object パラメーターを指定する必要があります。 Oracle パブリッシャーではサポートされていません。 |
proc exec |
アーティクルのすべてのサブスクライバーにストアド プロシージャの実行をレプリケートします。 Oracle パブリッシャーではサポートされていません。 proc exec の代わりに、serializable proc exec オプションを使用することをお勧めします。 詳細については、「トランザクション レプリケーションでのストアド プロシージャの実行の公開」の「ストアド プロシージャの実行の種類」 セクションを参照してください。 変更データ キャプチャが有効な場合は使用できません。 |
proc schema only |
スキーマのみを使用するプロシージャ。 Oracle パブリッシャーではサポートされていません。 |
serializable proc exec |
シリアル化可能なトランザクションのコンテキスト内で実行される場合にのみ、ストアド プロシージャの実行をレプリケートします。 Oracle パブリッシャーではサポートされていません。 プロシージャの実行をレプリケートするには、明示的なトランザクション内でプロシージャを実行する必要もあります。 |
view schema only |
スキーマのみを使用するビュー。 Oracle パブリッシャーではサポートされていません。 このオプションを使用する場合は、ベース テーブルも発行する必要があります。 |
[ @filter = ] N'filter'
テーブルを水平方向にフィルター処理するために使用されるストアド プロシージャ (FOR REPLICATION で作成)。 @filterは nvarchar(386) で、既定値は NULL
. ビューおよびフィルター ストアド プロシージャを作成するには、sp_articleviewとsp_articlefilterを手動で実行する必要があります。 そうでない NULL
場合、フィルター プロシージャは作成されません (ストアド プロシージャが手動で作成されていることを前提としています)。
[ @sync_object = ] N'sync_object'
この記事のスナップショットを表すために使用するデータ ファイルの生成に使用されるテーブルまたはビューの名前。 @sync_objectは nvarchar(386) で、既定値は NULL
. の場合 NULL
は、 出力 ファイルの生成に使用するビューを自動的に作成するためにsp_articleviewが呼び出されます。 これは、sp_articlecolumnを含む列を追加した後に 発生します。 作成されていない NULL
場合、ビューは作成されません (ビューが手動で作成されていることを前提としています)。
[ @ins_cmd = ] N'ins_cmd'
この記事の挿入をレプリケートするときに使用するレプリケーション コマンドの種類。 @ins_cmdは nvarchar(255)で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
NONE |
アクションは行われません。 |
CALL sp_MSins_<table> (既定)または CALL custom_stored_procedure_name |
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 <custom_stored_procedure> は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSins_<table> には、パラメーターの_table部分の代わりに変換先テーブルの名前が含まれています。 @destination_ownerを指定すると、コピー先のテーブル名の前に付加されます。 たとえば、サブスクライバーの ProductCategory スキーマが所有する Production テーブルの場合、パラメーターは CALL sp_MSins_ProductionProductCategory . ピア ツー ピア レプリケーション トポロジのアーティクルには、 <table> GUID 値が追加されます。 サブスクライバーの <custom_stored_procedure> 更新では、指定はサポートされていません。 |
SQL または NULL |
ステートメントを INSERT レプリケートします。 このステートメントは INSERT 、記事で公開されているすべての列の値を提供します。 次のコマンドは挿入時にレプリケートされます。INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue) |
詳細については、「 トランザクション アーティクル - 変更の伝達方法の指定」を参照してください。
[ @del_cmd = ] N'del_cmd'
この記事の削除をレプリケートするときに使用されるレプリケーション コマンドの種類。 @del_cmdは nvarchar(255)で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
NONE |
アクションは行われません。 |
CALLsp_MSdel_<table> (既定)または CALL <custom_stored_procedure_name> |
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 <custom_stored_procedure> は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSdel_<table> には、パラメーターの_table部分の代わりに変換先テーブルの名前が含まれています。 @destination_ownerを指定すると、コピー先のテーブル名の前に付加されます。 たとえば、サブスクライバーの ProductCategory スキーマが所有する Production テーブルの場合、パラメーターは CALL sp_MSdel_ProductionProductCategory . ピア ツー ピア レプリケーション トポロジのアーティクルには、 <table> GUID 値が追加されます。 サブスクライバーの <custom_stored_procedure> 更新では、指定はサポートされていません。 |
XCALL sp_MSdel_<table> または XCALL <custom_stored_procedure_name> |
スタイル パラメーターを受け取る XCALL ストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 ユーザーが作成したストアド プロシージャを指定してサブスクライバーを更新することはできません。 |
SQL または NULL |
ステートメントを DELETE レプリケートします。 ステートメントには DELETE 、すべての主キー列の値が指定されます。 このコマンドは、削除時にレプリケートされます。DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue |
詳細については、「 トランザクション アーティクル - 変更の伝達方法の指定」を参照してください。
[ @upd_cmd = ] N'upd_cmd'
この記事の更新プログラムをレプリケートするときに使用されるレプリケーション コマンドの種類。 @upd_cmdは nvarchar(255)で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
NONE |
アクションは行われません。 |
CALL sp_MSupd_<table> または CALL <custom_stored_procedure_name> |
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 |
MCALL sp_MSupd_<table> または MCALL <custom_stored_procedure_name> |
スタイル パラメーターを受け取る MCALL ストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 <custom_stored_procedure> は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSupd_<table> には、パラメーターの部分の代わりに変換先テーブルの名前が <table> 含まれています。 @destination_ownerを指定すると、コピー先のテーブル名の前に付加されます。 たとえば、サブスクライバーの ProductCategory スキーマが所有する Production テーブルの場合、パラメーターは MCALL sp_MSupd_ProductionProductCategory . ピア ツー ピア レプリケーション トポロジのアーティクルには、 <table> GUID 値が追加されます。 ユーザーが作成したストアド プロシージャを指定してサブスクライバーを更新することはできません。 |
SCALL sp_MSupd_<table> (既定)または SCALL <custom_stored_procedure_name> |
スタイル パラメーターを受け取る SCALL ストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 <custom_stored_procedure> は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSupd_<table> には、パラメーターの_table部分の代わりに変換先テーブルの名前が含まれています。 @destination_ownerを指定すると、コピー先のテーブル名の前に付加されます。 たとえば、サブスクライバーの ProductCategory スキーマが所有する Production テーブルの場合、パラメーターは SCALL sp_MSupd_ProductionProductCategory . ピア ツー ピア レプリケーション トポロジの記事では、 _table に GUID 値が追加されます。 ユーザーが作成したストアド プロシージャを指定してサブスクライバーを更新することはできません。 |
XCALL sp_MSupd_<table> または XCALL <custom_stored_procedure_name> |
スタイル パラメーターを受け取る XCALL ストアド プロシージャを呼び出します。 このレプリケーション方法を使用するには、@schema_optionを使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定されたストアド プロシージャを作成します。 ユーザーが作成したストアド プロシージャを指定してサブスクライバーを更新することはできません。 |
SQL または NULL |
ステートメントを UPDATE レプリケートします。 ステートメントは UPDATE 、すべての列値と主キー列の値に対して提供されます。 このコマンドは、更新時にレプリケートされます。UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue |
Note
、MCALL
、SCALL
およびXCALL
サブスクライバーに伝達されるデータの量を変更するための構文CALL
。 この構文は CALL
、挿入および削除されたすべての列のすべての値を渡します。 構文は SCALL
、影響を受ける列に対してのみ値を渡します。 この構文は XCALL
、変更されたかどうかにかかわらず、列の前の値を含め、すべての列の値を渡します。 詳細については、「 トランザクション アーティクル - 変更の伝達方法の指定」を参照してください。
[ @creation_script = ] N'creation_script'
サブスクリプション データベースにアーティクルを作成するために使用するオプションのアーティクル スキーマ スクリプトのパスと名前。 @creation_scriptは nvarchar(255) で、既定値は NULL
.
[ @description = ] N'description'
記事の説明的なエントリ。 @descriptionは nvarchar(255) で、既定値は NULL
.
[ @pre_creation_cmd = ] N'pre_creation_cmd'
この記事のスナップショットを適用するときに、サブスクライバーで同じ名前の既存のオブジェクトを検出した場合にシステムが実行する必要があることを指定します。 @pre_creation_cmdは nvarchar(10)で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
none |
コマンドを使用しません。 |
delete |
スナップショットを適用する前に、レプリケーション先テーブルからデータを削除します。 アーティクルが水平方向にフィルター処理されると、フィルター句で指定された列のデータのみが削除されます。 行フィルターが定義されている場合は、Oracle パブリッシャーに対してはサポートされません。 |
drop (既定) |
コピー先テーブルを削除します。 |
truncate |
コピー先テーブルを切り捨てます。 ODBC または OLE DB サブスクライバーでは無効です。 |
[ @filter_clause = ] N'filter_clause'
水平フィルターを定義する制限 (WHERE) 句。 制限句を入力するときは、キーワード (keyword) WHERE を省略します。 @filter_clauseは nvarchar(max) で、既定値は NULL
. 詳細については、「パブリッシュされたデータのフィルター選択」を参照してください。
[ @schema_option = ] schema_option
特定のアーティクルのスキーマ生成オプションのビットマスク。 @schema_optionは varbinary(8) で、既定値は NULL
|(ビットごとの OR)これらの値の 1 つ以上の積:
Note
この値の NULL
場合、他のアーティクルのプロパティに応じて、アーティクルの有効なスキーマ オプションが自動生成されます。 既定のスキーマ オプションには、アーティクルの種類とレプリケーションの種類の組み合わせに基づいて選択される値が表示されます。
Value | 説明 |
---|---|
0x00 |
スナップショット エージェントによるスクリプト作成を無効にし、@creation_scriptを使用します。 |
0x01 |
オブジェクト作成スクリプト (CREATE TABLE、CREATE PROCEDURE など) を生成します。 この値は、ストアド プロシージャアーティクルの既定値です。 |
0x02 |
定義されている場合、アーティクルの変更を反映するストアド プロシージャを生成します。 |
0x04 |
ID 列は、IDENTITY プロパティを使用してスクリプト化されます。 |
0x08 |
タイムスタンプ列をレプリケートします。 設定されていない場合、タイムスタンプ列はバイナリとしてレプリケートされます。 |
0x10 |
対応するクラスター化インデックスを生成します。 このオプションが設定されていない場合でも、主キーと一意の制約に関連するインデックスは、パブリッシュされたテーブルで既に定義されている場合に生成されます。 |
0x20 1 |
ユーザー定義データ型 (UDT) をサブスクライバーの基本データ型に変換します。 このオプションは、UDT 列に CHECK 制約または DEFAULT 制約がある場合、UDT 列が主キーの一部である場合、または計算列が UDT 列を参照している場合には使用できません。 |
0x40 |
対応する非クラスター化インデックスを生成します。 このオプションが設定されていない場合でも、主キーと一意の制約に関連するインデックスは、パブリッシュされたテーブルで既に定義されている場合に生成されます。 |
0x80 |
主キー制約をレプリケートします。 オプション 0x10 が 0x40 有効になっていない場合でも、制約に関連するすべてのインデックスもレプリケートされます。 |
0x100 1 |
定義されている場合、テーブル アーティクル上のユーザー トリガーをレプリケートします。 |
0x200 1 |
外部キー制約をレプリケートします。 参照先テーブルがパブリケーションの一部でない場合、パブリッシュされたテーブルに対するすべての外部キー制約はレプリケートされません。 |
0x400 1 |
チェック制約をレプリケートします。 |
0x800 1 |
既定値をレプリケートします。 |
0x1000 |
列レベルの照合順序をレプリケートします。 注: Oracle パブリッシャーで大文字と小文字を区別する比較を有効にするには、このオプションを設定する必要があります。 |
0x2000 1 |
パブリッシュされたアーティクル ソース オブジェクトに関連付けられている拡張プロパティをレプリケートします。 |
0x4000 |
UNIQUE 制約をレプリケートします。 オプション 0x10 が 0x40 有効になっていない場合でも、制約に関連するすべてのインデックスもレプリケートされます。 |
0x8000 |
このオプションは、SQL Server 2005 (9.x) パブリッシャーでは有効ではありません。 |
0x10000 |
同期中に制約が適用されないように、CHECK 制約を NOT FOR REPLICATION としてレプリケートします。 |
0x20000 |
同期中に制約が適用されないように、FOREIGN KEY 制約を NOT FOR REPLICATION としてレプリケートします。 |
0x40000 |
パーティション テーブルまたはインデックスに関連付けられているファイル グループをレプリケートします。 |
0x80000 |
パーティション テーブルのパーティション構成をレプリケートします。 |
0x100000 |
パーティション インデックスのパーティション構成をレプリケートします。 |
0x200000 |
テーブル統計をレプリケートします。 |
0x400000 |
既定のバインドです。 |
0x800000 |
ルールのバインドです。 |
0x1000000 |
フルテキスト インデックスです。 |
0x2000000 |
xml 列に バインドされた XML スキーマ コレクションはレプリケートされません。 |
0x4000000 |
xml 列のインデックスをレプリケートします。 |
0x8000000 |
サブスクライバーにまだ存在しないスキーマを作成します。 |
0x10000000 |
サブスクライバーの xml 列を ntext に変換します。 |
0x20000000 |
SQL Server 2005 (9.x) で導入されたラージ オブジェクト データ型 (nvarchar(max)、varchar(max)、varbinary(max)) を、SQL Server 2000 (8.x) でサポートされているデータ型に変換します。 |
0x40000000 |
アクセス許可をレプリケートします。 |
0x80000000 |
パブリケーションに含まれていないオブジェクトへの依存関係の削除を試みます。 |
0x100000000 |
varbinary(max) 列で FILESTREAM 属性が指定されている場合は、このオプションを使用して FILESTREAM 属性をレプリケートします。 SQL Server 2005 (9.x) サブスクライバーにテーブルをレプリケートする場合は、このオプションを指定しないでください。 FILESTREAM 列を持つテーブルを SQL Server 2000 (8.x) サブスクライバーにレプリケートすることは、このスキーマ オプションの設定方法に関係なくサポートされていません。 関連するオプション の0x800000000を参照してください。 |
0x200000000 |
SQL Server 2008 (10.0.x) で導入された日付と時刻のデータ型 (日付、時刻、datetimeoffset、datetime2) を、以前のバージョンの SQL Server でサポートされているデータ型に変換します。 |
0x400000000 |
データとインデックスの圧縮オプションをレプリケートします。 詳細については、「データ圧縮」を参照してください。 |
0x800000000 |
このオプションを設定すると、サブスクライバーの独自のファイル グループに FILESTREAM データを格納できます。 このオプションが設定されていない場合、FILESTREAM データは既定のファイル グループに格納されます。 レプリケーションではファイル グループは作成されません。そのため、このオプションを設定する場合は、サブスクライバーでスナップショットを適用する前に、ファイル グループを作成する必要があります。 スナップショットを適用する前にオブジェクトを作成する方法の詳細については、「スナップショットが適用される前と後にスクリプトを実行する」を参照してください。 関連するオプション の0x100000000を参照してください。 |
0x1000000000 |
8000 バイトを超える共通言語ランタイム (CLR) ユーザー定義型 (UDT) を varbinary(max) に 変換して、型 UDT の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるようにします。 |
0x2000000000 |
hierarchyid データ型を varbinary(max) に変換し、hierarchyid 型の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるようにします。 レプリケート テーブルで hierarchyid 列を使用する方法の詳細については、「hierarchyid (Transact-SQL)」を参照してください。 |
0x4000000000 |
フィルター処理されたインデックスをテーブルにレプリケートします。 フィルター選択されたインデックスについて詳しくは、「フィルター選択されたインデックスの作成」を参照してください。 |
0x8000000000 |
これらの型の列を SQL Server 2005 (9.x) を実行しているサブスクライバーにレプリケートできるように、geography データ型と geometry データ型を varbinary(max) に変換します。 |
0x10000000000 |
geography 型と geometry 型の列にインデックスをレプリケートします。 |
0x20000000000 |
列の SPAR Standard Edition 属性をレプリケートします。 この属性の詳細については、「スパース列の使用」を参照してください。 |
0x40000000000 |
スナップショット エージェントによるスクリプト作成を有効にして、サブスクライバーにメモリ最適化テーブルを作成します。 |
0x80000000000 |
メモリ最適化アーティクルのクラスター化インデックスを非クラスター化インデックスに変換します。 |
0x400000000000 |
非クラスター化列ストア インデックスをテーブルにレプリケートします。 |
0x800000000000 |
フィルター処理された非クラスター化列ストア インデックスをテーブルにレプリケートします。 |
NULL |
レプリケーションでは、@schema_optionが既定値に自動的に設定され、その値は他のアーティクルのプロパティに依存します。 [解説] セクションの [既定のスキーマ オプション] テーブルには、アーティクルの種類とレプリケーションの種類に基づく既定のスキーマ オプションが表示されます。 SQL Server 以外のパブリケーションの既定値は . 0x050D3 |
1 Oracle パブリッシャーではサポートされていません。
すべての @schema_option 値が、すべての種類のレプリケーションとアーティクルの種類に対して有効であるわけではありません。 [ 解説] セクションの [有効なスキーマ オプション] テーブルには、アーティクルの種類とレプリケーションの種類の組み合わせに基づいて選択できる有効なスキーマ オプションが表示されます。
[ @destination_owner = ] N'destination_owner'
目的のオブジェクトの所有者名。 @destination_ownerは sysname で、既定値は NULL
. @destination_ownerが指定されていない場合、所有者は次の規則に基づいて自動的に指定されます。
条件 | 対象オブジェクトの所有者 |
---|---|
パブリケーションでは、ネイティブ モードの一括コピーを使用して、SQL Server サブスクライバーのみをサポートする初期スナップショットが生成されます。 | 既定値は @source_owner の値です。 |
SQL Server 以外のパブリッシャーから発行されます。 | 既定では、コピー先データベースの所有者が使用されます。 |
パブリケーションでは、文字モードの一括コピーを使用して、SQL Server 以外のサブスクライバーをサポートする初期スナップショットが生成されます。 | 割り当てられていません。 |
SQL Server 以外のサブスクライバーをサポートするには、 @destination_owner する NULL
必要があります。
[ @status = ] 状態
アーティクルがアクティブかどうかを指定し、変更を反映する方法に関する追加のオプションを指定します。 @statusは tinyint であり、|(ビットごとの OR)これらの値の 1 つ以上の積。
Value | 説明 |
---|---|
1 |
アーティクルがアクティブです。 |
8 |
ステートメントに列名を INSERT 含めます。 |
16 (既定) |
パラメーター化されたステートメントを使用します。 |
24 |
ステートメントに列名 INSERT を含め、パラメーター化されたステートメントを使用します。 |
64 |
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
たとえば、パラメーター化されたステートメントを使用するアクティブなアーティクルは、この列の 17
値になります。 値は 0
、アーティクルが非アクティブであり、追加のプロパティが定義されていないことを意味します。
[ @source_owner = ] N'source_owner'
ソース オブジェクトの所有者。 @source_ownerは sysname で、既定値は NULL
. @source_ownerは Oracle パブリッシャーに対して指定する必要があります。
[ @sync_object_owner = ] N'sync_object_owner'
パブリッシュされたアーティクルを定義するビューの所有者。 @sync_object_ownerは sysname で、既定値は NULL
.
[ @filter_owner = ] N'filter_owner'
フィルターの所有者。 @filter_ownerは sysname で、既定値は NULL
.
[ @source_object = ] N'source_object'
パブリッシュするデータベース オブジェクト。 @source_objectは sysname で、既定値は NULL
. @source_tableの場合、NULL
@source_objectにすることはできませんNULL
。 @source_tableの代わりに、@source_objectを使用する必要があります。 スナップショットまたはトランザクション レプリケーションを使用してパブリッシュできるオブジェクトの種類の詳細については、「データおよびデータベース オブジェクトのパブリッシュ」を参照してください。
[ @artid = ] artid OUTPUT
新しい記事のアーティクル ID。 @artidは int 型の OUTPUT パラメーターです。
[ @auto_identity_range = ] N'auto_identity_range'
パブリケーションの作成時に、パブリケーションの ID 範囲の自動処理を有効または無効にします。 @auto_identity_rangeは nvarchar(5) で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
true |
ID 範囲の自動処理を有効にします |
false |
自動 ID 範囲処理を無効にします。 |
NULL (既定) |
ID 範囲の処理は、@identityrangemanagementoptionによって 設定されます。 |
Note
@auto_identity_rangeは非推奨であり、下位互換性のみを目的として提供されています。 ID 範囲管理オプションを指定するには、@identityrangemanagementoptionを使用する必要があります。 詳細については、「Replicate Identity Columns」 (ID 列のレプリケート) を参照してください。
[ @pub_identity_range = ] pub_identity_range
アーティクルが auto に設定されている場合、または @auto_identity_range が true に設定@identityrangemanagementoption場合に、パブリッシャーの範囲サイズを制御します。 @pub_identity_rangeは bigint で、既定値は NULL
. @pub_identity_rangeは Oracle パブリッシャーではサポートされていません。
[ @identity_range = ] identity_range
アーティクルが自動または@auto_identity_range true に設定@identityrangemanagementoption場合、サブスクライバーの範囲サイズを制御します。 @identity_rangeは bigint で、既定値は NULL
. @auto_identity_rangeが true に設定されている場合に使用されます。 @identity_rangeは Oracle パブリッシャーではサポートされていません。
[ @threshold = ] しきい値
ディストリビューション エージェントがどの時点で新しい ID 範囲を割り当てるかを制御するパーセンテージの値です。 @thresholdで指定された値の割合を使用すると、ディストリビューション エージェントによって新しい ID 範囲が作成されます。 @thresholdは int で、既定値は NULL
. @identityrangemanagementoptionが auto に設定されている場合、または@auto_identity_rangeが true に設定されている場合に使用されます。 @thresholdは Oracle パブリッシャーではサポートされていません。
[ @force_invalidate_snapshot = ] force_invalidate_スナップショット
このストアド プロシージャによって実行されたアクションによって、既存のスナップショットが無効になる可能性があることを確認します。 @force_invalidate_スナップショットはビットで、既定値は 0
.
0
は、アーティクルを追加してもスナップショットが無効にならないことを指定します。 変更に新しいスナップショットが必要であることをストアド プロシージャが検出すると、エラーが発生し、変更は加えられません。1
は、アーティクルを追加すると、スナップショットが無効になる可能性があり、新しいスナップショットが必要なサブスクリプションが存在する場合は、既存のスナップショットを古いとしてマークし、新しいスナップショットを生成するためのアクセス許可を付与します。
[ @use_default_datatypes = ] use_default_datatypes
Oracle パブリッシャーからアーティクルを発行するときに、既定の列データ型マッピングを使用するかどうかを指定します。 @use_default_datatypesはビットで、既定値は 1
.
1
= 既定のアーティクル列マッピングが使用されます。 既定のデータ型マッピングは、sp_getdefaultdatatypemappingを実行することで表示できます。0
= カスタム アーティクル列のマッピングが定義されているため 、sp_articleview は呼び出sp_addarticle
されません。
@use_default_datatypesが設定されている場合は、既定から変更される列マッピングごとに、sp_changearticlecolumndatatypeを 1 回実行する必要0
があります。 すべてのカスタム列マッピングが定義されたら、sp_articleviewを実行する必要があります。
Note
このパラメーターは、Oracle パブリッシャーにのみ使用してください。 SQL Server パブリッシャーに対して0
@use_default_datatypesを設定すると、エラーが発生します。
[ @identityrangemanagementoption = ] N'identityrangemanagementoption'
アーティクルの ID 範囲管理の処理方法を指定します。 @identityrangemanagementoptionは nvarchar(10)で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
none |
明示的な ID 範囲の管理は行われません。 このオプションは、以前のバージョンの SQL Server との下位互換性のためにのみ推奨されます。 ピア レプリケーションは許可されません。 |
manual |
NOT FOR REPLICATION を使用して ID 列をマークし、手動での ID 範囲の処理を有効にします。 |
auto |
ID 範囲の自動管理を指定します。 |
NULL (既定) |
既定値はnone 、@auto_identity_range の値がそうでないtrue 場合です。 ピア ツー ピア トポロジの manual 既定値は既定値です (@auto_identity_range は無視されます)。 |
下位互換性のために、@identityrangemanagementoptionの値が指定されている場合、NULL
@auto_identity_rangeの値がチェックされます。 ただし、@identityrangemanagementoptionの値がないNULL
場合、@auto_identity_rangeの値は無視されます。
詳細については、「Replicate Identity Columns」 (ID 列のレプリケート) を参照してください。
[ @publisher = ] N'publisher'
SQL Server 以外のパブリッシャーを指定します。 @publisherは sysname で、既定値は NULL
.
@publisherは、SQL Server パブリッシャーにアーティクルを追加するときに使用しないでください。
[ @fire_triggers_on_snapshot = ] N'fire_triggers_on_スナップショット'
初期スナップショットが適用されたときにレプリケートされたユーザー トリガーが実行される場合。 @fire_triggers_on_スナップショットは nvarchar(5) で、既定値は false
. true
は、レプリケートされたテーブルに対するユーザー トリガーが、スナップショットが適用されたときに実行されることを意味します。 トリガーをレプリケートするには、@schema_optionのビットマスク値に値0x100
を含める必要があります。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_addarticle
は、スナップショット レプリケーションまたはトランザクション レプリケーションで使用されます。
既定では、レプリケーションで列データ型がサポートされていない場合、レプリケーションではソース テーブル内の列は発行されません。 このような列を発行する必要がある場合は、sp_articlecolumn実行して列を追加する必要があります。
ピアツーピア トランザクション レプリケーションをサポートするパブリケーションにアーティクルを追加する場合、次の制限が適用されます。
パラメーター化されたステートメントは、すべてのログベースアーティクルに対して指定する必要があります。 @status値に含める
16
必要があります。コピー先テーブルの名前と所有者は、ソース テーブルと一致している必要があります。
記事を水平方向または垂直方向にフィルター処理することはできません。
ID 範囲の自動管理はサポートされていません。 @identityrangemanagementoptionには manual の値を指定する必要があります。
テーブルにタイムスタンプ列が存在する場合は、@schema_optionに0x08を含め、その列をタイムスタンプとしてレプリケートする必要があります。
値は
SQL
、@ins_cmd、@upd_cmd、および@del_cmdに指定できません。
詳細については、「ピア ツー ピア - トランザクション レプリケーション」を参照してください。
オブジェクトをパブリッシュすると、その定義がサブスクライバーにコピーされます。 1 つ以上の他のオブジェクトに依存するデータベース オブジェクトをパブリッシュする場合は、参照されているすべてのオブジェクトをパブリッシュする必要があります。 たとえば、テーブルに依存しているビューをパブリッシュする場合は、そのテーブルもパブリッシュする必要があります。
@vertical_partitionが true に設定されている場合は、sp_addarticle
(最後のsp_articlecolumnが追加された後に) sp_articleviewが呼び出されるまでビューの作成を延期します。
パブリケーションでサブスクリプションの更新が許可され、パブリッシュされたテーブルに uniqueidentifier 列がない場合は、 sp_addarticle
uniqueidentifier 列がテーブルに自動的に追加されます。
SQL Server のインスタンスではないサブスクライバーにレプリケートする場合 (異種レプリケーション)、Transact-SQL ステートメントのみがサポートされますINSERT
UPDATE
DELETE
。
ログ リーダー エージェントが実行されている場合、ピア ツー ピア パブリケーションにアーティクルを追加すると、ログ リーダー エージェントとアーティクルを追加するプロセスの間でデッドロックが発生する可能性があります。 この問題を回避するには、ピアツーピア パブリケーションにアーティクルを追加する前に、レプリケーション モニターを使用して、アーティクルを追加するノードでログ リーダー エージェントを停止します。 記事を追加した後、ログ リーダー エージェントを再起動します。
@del_cmdを@ins_cmdにNONE
NONE
設定すると、有界更新が発生したときにコマンドをUPDATE
送信しないことによって、コマンドの伝達も影響を受ける可能性があります。 (有界更新は、サブスクライバー上の UPDATE
ペアとして DELETE
/INSERT
レプリケートされるパブリッシャーからのステートメントの種類です)。
既定のスキーマ オプション
次の表では、@schema_optionsがユーザーによって指定されていない場合に、レプリケーションによって設定される既定値について説明します。この値は、レプリケーションの種類 (上部に表示) とアーティクルの種類 (最初の列の下に表示) によって異なります。
記事の種類 | トランザクション レプリケーション | スナップショット レプリケーション |
---|---|---|
集計スキーマのみ | 0x01 |
0x01 |
func スキーマのみ | 0x01 |
0x01 |
インデックス付きビュー スキーマのみ | 0x01 |
0x01 |
インデックス付きビューのログベース | 0x30F3 |
0x3071 |
indexed view logbase manualboth | 0x30F3 |
0x3071 |
インデックス付きビューのログベースの手動フィルター | 0x30F3 |
0x3071 |
インデックス付きビューの logbased manualview | 0x30F3 |
0x3071 |
logbased | 0x30F3 |
0x3071 |
logbased manualfilter | 0x30F3 |
0x3071 |
logbased manualview | 0x30F3 |
0x3071 |
proc exec | 0x01 |
0x01 |
proc スキーマのみ | 0x01 |
0x01 |
serializable proc exec | 0x01 |
0x01 |
ビュー スキーマのみ | 0x01 |
0x01 |
Note
パブリケーションでキュー更新が有効になっている場合、 テーブルに表示される既定値に@schema_option 値 0x80
が追加されます。 SQL Server 以外のパブリケーションの既定の@schema_optionは .0x050D3
有効なスキーマ オプション
次の表では、レプリケーションの種類 (上部に表示) とアーティクルの種類 (最初の 列の下に表示) に基づいて、@schema_option の許容値について説明します。
記事の種類 | トランザクション レプリケーション | スナップショット レプリケーション |
---|---|---|
logbased | すべてのオプション | すべてのオプション 0x02 |
logbased manualfilter | すべてのオプション | すべてのオプション 0x02 |
logbased manualview | すべてのオプション | すべてのオプション 0x02 |
インデックス付きビューのログベース | すべてのオプション | すべてのオプション 0x02 |
インデックス付きビューのログベースの手動フィルター | すべてのオプション | すべてのオプション 0x02 |
インデックス付きビューの logbased manualview | すべてのオプション | すべてのオプション 0x02 |
indexed view logbase manualboth | すべてのオプション | すべてのオプション 0x02 |
proc exec | 0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
serializable proc exec | 0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
proc スキーマのみ | 0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
ビュー スキーマのみ | 0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , , 0x2000 , 0x40000 , 0x100000 , 0x200000 , , 0x400000 , 0x800000 , 0x2000000 , , 0x8000000 , 0x40000000 and 0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , , 0x2000 , 0x40000 , 0x100000 , 0x200000 , , 0x400000 , 0x800000 , 0x2000000 , , 0x8000000 , 0x40000000 and 0x80000000 |
func スキーマのみ | 0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
0x01 、 0x20 , 0x2000 , 0x400000 , , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , and 0x80000000 |
インデックス付きビュー スキーマのみ | 0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , , 0x2000 , 0x40000 , 0x100000 , 0x200000 , , 0x400000 , 0x800000 , 0x2000000 , , 0x8000000 , 0x40000000 and 0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , , 0x2000 , 0x40000 , 0x100000 , 0x200000 , , 0x400000 , 0x800000 , 0x2000000 , , 0x8000000 , 0x40000000 and 0x80000000 |
Note
キュー更新パブリケーションの場合、 @schema_option の 0x8000
値を 0x80
有効にする必要があります。 SQL Server 以外のパブリケーションでサポートされている@schema_option値は、次 0x40
0x4000
0X8000
0x10
0x1000
0x02
0x80
のとおりです。 0x01
例
DECLARE @publication AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL';
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle
@publication = @publication,
@article = @table,
@source_object = @table,
@source_owner = @schemaowner,
@schema_option = 0x80030F3,
@vertical_partition = N'true',
@type = N'logbased',
@filter_clause = @filterclause;
-- (Optional) Manually call the stored procedure to create the
-- horizontal filtering stored procedure. Since the type is
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter
@publication = @publication,
@article = @table,
@filter_clause = @filterclause,
@filter_name = @filtername;
-- Add all columns to the article.
EXEC sp_articlecolumn
@publication = @publication,
@article = @table;
-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn
@publication = @publication,
@article = @table,
@column = N'DaysToManufacture',
@operation = N'drop';
-- (Optional) Manually call the stored procedure to create the
-- vertical filtering view. Since the type is 'logbased',
-- this stored procedures is executed automatically.
EXEC sp_articleview
@publication = @publication,
@article = @table,
@filter_clause = @filterclause;
GO
アクセス許可
sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーのみが実行sp_addarticle
できます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示