sp_addarticle (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

アーティクルを作成し、パブリケーションに追加します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

  
sp_addarticle [ @publication = ] 'publication'   
        , [ @article = ] 'article'   
    [ , [ @source_table = ] 'source_table' ]  
    [ , [ @destination_table = ] 'destination_table' ]   
    [ , [ @vertical_partition = ] 'vertical_partition' ]   
    [ , [ @type = ] 'type' ]   
    [ , [ @filter = ] 'filter' ]   
    [ , [ @sync_object= ] 'sync_object' ]   
        [ , [ @ins_cmd = ] 'ins_cmd' ]   
    [ , [ @del_cmd = ] 'del_cmd' ]   
        [ , [ @upd_cmd = ] 'upd_cmd' ]   
    [ , [ @creation_script = ] 'creation_script' ]   
    [ , [ @description = ] 'description' ]   
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]   
    [ , [ @filter_clause = ] 'filter_clause' ]   
    [ , [ @schema_option = ] schema_option ]   
    [ , [ @destination_owner = ] 'destination_owner' ]   
    [ , [ @status = ] status ]   
    [ , [ @source_owner = ] 'source_owner' ]   
    [ , [ @sync_object_owner = ] 'sync_object_owner' ]   
    [ , [ @filter_owner = ] 'filter_owner' ]   
    [ , [ @source_object = ] 'source_object' ]   
    [ , [ @artid = ] article_ID  OUTPUT ]   
    [ , [ @auto_identity_range = ] '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 = ] identityrangemanagementoption ]  
    [ , [ @publisher = ] 'publisher' ]  
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]   

引数

[ @publication = ] 'publication' アーティクルを含むパブリケーションの名前を指定します。 名前はデータベース内で一意である必要があります。 publicationsysname で、既定値はありません。

[ @article = ] 'article' アーティクルの名前を指定します。 名前はパブリケーション内で一意であることが必要です。 articlesysname で、既定値はありません。

[ @source_table = ] 'source_table' このパラメーターは非推奨になりました。代わりに source_object を使用してください。

このパラメーターは、Oracle パブリッシャーではサポートされていません。

[ @destination_table = ] 'destination_table'source_tableまたはストアド プロシージャと異なる場合は、変換先 (サブスクリプション) テーブルの名前です。 destination_tablesysname で、既定値は NULL です。これは、 source_tabledestination_table*.* に等しいことを意味します。

[ @vertical_partition = ] 'vertical_partition' テーブル アーティクルの列フィルター処理を有効または無効にします。 vertical_partitionnchar(5)で、既定値は FALSE です。

false は 、垂直方向のフィルター処理がないことを示し、すべての列を発行します。

true は 、宣言された主キー、既定のない null 許容列、および一意のキー列を除くすべての列をクリアします。 列は 、sp_articlecolumnを使用して追加されます。

[ @type = ] 'type' アーティクルの種類です。 typesysname で、次のいずれかの値を指定できます。

説明
aggregate schema only スキーマのみを使用する集計関数。
func スキーマのみ スキーマのみの関数。
indexed view logbased ログ ベースのインデックス付きビューに関する記事。 Oracle パブリッシャーではサポートされていません。 この種類の記事では、ベース テーブルを個別に発行する必要はありません。
indexed view logbased manualboth 手動フィルターと手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、 sync_object パラメーターと フィルター パラメーターの両方を指定する必要があります。 この種類の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。
indexed view logbased manualfilter 手動フィルターを使用したログ ベースのインデックス付きビューに関する記事。 このオプションでは、 sync_object パラメーターと フィルター パラメーターの両方を指定する必要があります。 この種類の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。
indexed view logbased manualview 手動ビューを使用する、ログベースのインデックス付きビュー アーティクルです。 このオプションでは、 sync_object パラメーターを指定する必要があります。 この種類の記事では、ベース テーブルを個別に発行する必要はありません。 Oracle パブリッシャーではサポートされていません。
インデックス付きビュー スキーマのみ スキーマのみを使用するインデックス付きビュー。 この種類のアーティクルでは、ベース テーブルも発行する必要があります。
logbased (既定値) ログベースの記事。
logbased manualboth 手動フィルターと手動ビューを含むログ ベースの記事。 このオプションでは、 sync_object パラメーターと フィルター パラメーターの両方を指定する必要があります。 Oracle パブリッシャーではサポートされていません。
logbased manualfilter 手動フィルターを使用したログベースの記事。 このオプションでは、 sync_object パラメーターと フィルター パラメーターの両方を指定する必要があります。 Oracle パブリッシャーではサポートされていません。
logbased manualview 手動ビューを使用する、ログベースのアーティクルです。 このオプションでは、 sync_object パラメーターを指定する必要があります。 Oracle パブリッシャーではサポートされていません。
proc exec アーティクルのすべてのサブスクライバーにストアド プロシージャの実行をレプリケートします。 Oracle パブリッシャーではサポートされていません。 proc exec の代わりに、オプションの serializable proc exec を使用することをお勧めします。 詳細については、「トランザクション レプリケーションでのストアド プロシージャの実行の公開」の「 ストアド プロシージャ実行アーティクルの種類」セクションを参照してください。 変更データ キャプチャが有効な場合は使用できません。
proc スキーマのみ スキーマのみを使用するプロシージャ。 Oracle パブリッシャーではサポートされていません。
serializable proc exec シリアライゼーション可能なトランザクションのコンテキスト内で実行される場合にのみ、ストアド プロシージャの実行をレプリケートします。 Oracle パブリッシャーではサポートされていません。

プロシージャの実行をレプリケートするには、明示的なトランザクション内でプロシージャを実行する必要もあります。
view schema only スキーマのみを使用するビュー。 Oracle パブリッシャーではサポートされていません。 このオプションを使用する場合は、ベース テーブルも発行する必要があります。

[ @filter = ] 'filter' テーブルを水平方向にフィルター処理するために使用されるストアド プロシージャ (FOR REPLICATION で作成) です。 filternvarchar(386)で、既定値は NULL です。 ビュー とフィルター ストアド プロシージャ 作成するには、sp_articleviewとsp_articlefilterを手動で実行する必要があります。 NULL 以外を指定した場合は、ストアド プロシージャが手動で作成されるものと見なされるため、フィルター プロシージャは作成されません。

[ @sync_object = ] 'sync_object' この記事のスナップショットを表すために使用されるデータ ファイルの生成に使用されるテーブルまたはビューの名前です。 sync_objectnvarchar(386)で、既定値は NULL です。 NULL の場合、 sp_articleview が呼び出され、出力ファイルの生成に使用されるビューが自動的に作成されます。 これは、 sp_articlecolumnを含む列を追加した後に発生します。 NULL 以外を指定した場合は、ビューが手動で作成されるものと見なされるため、ビューは作成されません。

[ @ins_cmd = ] 'ins_cmd' この記事の挿入をレプリケートするときに使用されるレプリケーション コマンドの種類です。 ins_cmdnvarchar(255)で、次のいずれかの値を指定できます。

説明
NONE アクションは行われません。
CALL sp_MSins_
table (既定値)

\- または -

CALL custom_stored_procedure_name
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション 方法を使用するには、 schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定したストアド プロシージャを作成します。 custom_stored_procedure は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSins_table には、パラメーターの _table 部分の代わりに、変換先テーブルの名前が含まれます。 destination_ownerを指定すると、変換先テーブル名の前に付加されます。 たとえば、サブスクライバーの運用スキーマが所有する ProductCategory テーブルの場合、パラメーターは になりますCALL sp_MSins_ProductionProductCategory。 ピア ツー ピア レプリケーション トポロジのアーティクルの場合、 _table に GUID 値が追加されます。 サブスクライバーの更新では 、custom_stored_procedure の指定はサポートされていません。
SQL または NULL INSERT ステートメントをレプリケートします。 INSERT ステートメントでは、アーティクル内にある、パブリッシュされるすべての列の値が指定されます。 次のコマンドは挿入時にレプリケートされます。

INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

詳細については、「トランザクション アーティクルに変更を反映する方法の指定」を参照してください。

[ @del_cmd = ] 'del_cmd' この記事の削除をレプリケートするときに使用されるレプリケーション コマンドの種類です。 del_cmdnvarchar(255)であり、次のいずれかの値を指定できます。

説明
NONE アクションは行われません。
CALLsp_MSdel_
table (既定値)

\- または -

CALL custom_stored_procedure_name
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション 方法を使用するには、 schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定したストアド プロシージャを作成します。 custom_stored_procedure は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSdel_table には、パラメーターの _table 部分の代わりに、変換先テーブルの名前が含まれます。 destination_ownerを指定すると、変換先テーブル名の前に付加されます。 たとえば、サブスクライバーの運用スキーマが所有する ProductCategory テーブルの場合、パラメーターは になりますCALL sp_MSdel_ProductionProductCategory。 ピア ツー ピア レプリケーション トポロジのアーティクルの場合、 _table に GUID 値が追加されます。 サブスクライバーの更新では 、custom_stored_procedure の指定はサポートされていません。
XCALL sp_MSdel_
テーブル

\- または -

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 = ] 'upd_cmd' この記事の更新プログラムをレプリケートするときに使用されるレプリケーション コマンドの種類です。 upd_cmdnvarchar(255)で、次のいずれかの値を指定できます。

説明
NONE アクションは行われません。
CALL sp_MSupd_
テーブル

\- または -

CALL custom_stored_procedure_name
サブスクライバー側で実行されるストアド プロシージャを呼び出します。 このレプリケーション 方法を使用するには、 schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定したストアド プロシージャを作成します。
MCALL sp_MSupd_
テーブル

\- または -

MCALL custom_stored_procedure_name
MCALL スタイルのパラメーターを受け取るストアド プロシージャを呼び出します。 このレプリケーション 方法を使用するには、 schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバーの宛先データベースに指定したストアド プロシージャを作成します。 custom_stored_procedure は、ユーザーが作成したストアド プロシージャの名前です。 sp_MSupd_table には、パラメーターの _table 部分の代わりに、変換先テーブルの名前が含まれます。 destination_ownerを指定すると、変換先テーブル名の前に付加されます。 たとえば、サブスクライバーの運用スキーマが所有する ProductCategory テーブルの場合、パラメーターは になります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 テーブルの場合、パラメーターは になりますSCALL sp_MSupd_ProductionProductCategory。 ピア ツー ピア レプリケーション トポロジのアーティクルの場合、 _table に GUID 値が追加されます。 サブスクライバーの更新には、ユーザーが作成したストアド プロシージャの指定は許可されません。
XCALL sp_MSupd_
テーブル

\- または -

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

CALL、MCALL、SCALL、および XCALL 構文は、サブスクライバーに伝達されるデータの量を変更します。 CALL 構文では、挿入されたすべての列および削除されたすべての列に関するすべての値が渡されます。 SCALL 構文では、影響を受けた列の値のみが渡されます。 XCALL 構文は、変更されたかどうかにかかわらず、列の前の値を含め、すべての列の値を渡します。 詳細については、「トランザクション アーティクルに変更を反映する方法の指定」を参照してください。

[ @creation_script = ] 'creation_script' サブスクリプション データベースでアーティクルを作成するために使用するオプションのアーティクル スキーマ スクリプトのパスと名前を指定します。 creation_scriptnvarchar(255)、既定値は NULL です。

[ @description = ] 'description' 記事の説明的なエントリです。 descriptionnvarchar(255)で、既定値は NULL です。

[ @pre_creation_cmd = ] 'pre_creation_cmd' この記事のスナップショットを適用するときに、サブスクライバーで同じ名前の既存のオブジェクトを検出した場合にシステムが実行する必要がある操作を指定します。 pre_creation_cmdnvarchar(10)であり、次のいずれかの値を指定できます。

説明
"なし" コマンドを使用しません。
delete スナップショットを適用する前に、レプリケーション先テーブルからデータを削除します。 アーティクルが水平方向にフィルター処理されると、filter 句で指定された列のデータのみが削除されます。 行フィルターが定義されている場合は、Oracle パブリッシャーに対してはサポートされません。
drop (既定値) 変換先テーブルを削除します。
truncate コピー先テーブルを切り捨てます。 ODBC または OLE DB サブスクライバーには無効です。

[ @filter_clause = ] 'filter_clause' 水平フィルターを定義する制限 (WHERE) 句です。 制限句を入力するときは、キーワード WHERE を省略します。 filter_clausentext で、既定値は NULL です。 詳細については、「パブリッシュされたデータのフィルター選択」を参照してください。

[ @schema_option = ] schema_option 指定されたアーティクルのスキーマ生成オプションのビットマスクです。 schema_optionbinary(8)であり、 |(ビットごとの OR) これらの値の 1 つ以上の積:

Note

この値が NULL の場合は、他のアーティクルのプロパティに応じて、アーティクルの有効なスキーマ オプションが自動生成されます。 「解説 」の「既定のスキーマ オプション」 テーブルには、アーティクルの種類とレプリケーションの種類の組み合わせに基づいて選択される値が表示されます。

説明
0x00 スナップショット エージェントによるスクリプト作成を無効にし、creation_scriptを使用します。
0x01 オブジェクト作成スクリプト (CREATE TABLE、CREATE PROCEDURE など) を生成します。 この値は、ストアド プロシージャアーティクルの既定値です。
0x02 定義されている場合、アーティクルの変更を反映するストアド プロシージャを生成します。
0x04 ID 列は、IDENTITY プロパティを使用してスクリプト化されます。
0x08 タイムスタンプ列をレプリケートします。 設定されていない場合、 タイムスタンプ 列は バイナリとしてレプリケートされます。
0x10 対応するクラスター化インデックスを生成します。 このオプションが設定されていない場合でも、主キーと一意制約に関連するインデックスは、パブリッシュされたテーブルで既に定義されている場合に生成されます。
0x20 ユーザー定義データ型 (UDT) をサブスクライバーの基本データ型に変換します。 UDT 列に CHECK 制約または DEFAULT 制約がある場合、UDT 列が主キーの一部である場合、または計算列が UDT 列を参照している場合は、このオプションを使用できません。 Oracle パブリッシャーではサポートされていません
0x40 対応する非クラスター化インデックスを生成します。 このオプションが設定されていない場合でも、主キーと一意制約に関連するインデックスは、パブリッシュされたテーブルで既に定義されている場合に生成されます。
0x80 主キー制約をレプリケートします。 オプション0x100x40が有効になっていない場合でも、制約に関連するインデックスもレプリケートされます。
0x100 定義されている場合、テーブル アーティクル上のユーザー トリガーをレプリケートします。 Oracle パブリッシャーではサポートされていません
0x200 外部キー制約をレプリケートします。 参照先テーブルがパブリケーションの一部でない場合、パブリッシュされたテーブルに対するすべての外部キー制約はレプリケートされません。 Oracle パブリッシャーではサポートされていません
0x400 check 制約をレプリケートします。 Oracle パブリッシャーではサポートされていません
0x800 既定値をレプリケートします。 Oracle パブリッシャーではサポートされていません
0x1000 列レベルの照合順序をレプリケートします。

メモ: Oracle パブリッシャーで大文字と小文字を区別する比較を有効にするには、このオプションを設定する必要があります。
0x2000 パブリッシュされたアーティクル ソース オブジェクトに関連付けられている拡張プロパティをレプリケートします。 Oracle パブリッシャーではサポートされていません
0x4000 UNIQUE 制約をレプリケートします。 オプション0x100x40が有効になっていない場合でも、制約に関連するインデックスもレプリケートされます。
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 FILESTREAM 属性が varbinary(max) 列で指定されている場合は、このオプションを使用してレプリケートします。 SQL Server 2005 (9.x) サブスクライバーにテーブルをレプリケートする場合は、このオプションを指定しないでください。 FILESTREAM 列を持つテーブルを SQL Server 2000 (8.x) サブスクライバーにレプリケートすることは、このスキーマ オプションの設定方法に関係なくサポートされていません。

関連するオプション の0x800000000を参照してください。
0x200000000 SQL Server 2008 (10.0.x) で導入された日付と時刻のデータ型 (date、timedatetimeoffsetdatetime2) を、以前のバージョンのSQL Serverでサポートされているデータ型に変換します。
0x400000000 データとインデックスの圧縮オプションをレプリケートします。 詳細については、「 Data Compression」を参照してください。
0x800000000 このオプションを設定すると、サブスクライバーの独自のファイル グループに FILESTREAM データを格納できます。 このオプションが設定されていない場合、FILESTREAM データは既定のファイル グループに格納されます。 レプリケーションではファイル グループは作成されません。そのため、このオプションを設定する場合は、サブスクライバーでスナップショットを適用する前にファイル グループを作成する必要があります。 スナップショットを適用する前にオブジェクトを作成する方法の詳細については、「スナップショットが 適用される前と適用後にスクリプトを実行する」を参照してください。

関連するオプション の0x100000000を参照してください。
0x1000000000 8000 バイトを超える共通言語ランタイム (CLR) ユーザー定義型 (UDT) を varbinary(max) に変換し、UDT 型の列を 2005 (9.x) SQL Server実行しているサブスクライバーにレプリケートできるようにします。
0x2000000000 hierarchyid データ型を varbinary(max) に変換し、hierarchyid 型の列を 2005 (9.x) SQL Server実行しているサブスクライバーにレプリケートできるようにします。 レプリケートされたテーブルで hierarchyid 列を使用する方法の詳細については、「 hierarchyid (Transact-SQL)」を参照してください。
0x4000000000 フィルター処理されたインデックスをテーブルにレプリケートします。 フィルター処理されたインデックスの詳細については、「フィルター選択 されたインデックスの作成」を参照してください。
0x8000000000 geography データ型と geometry データ型を varbinary(max) に変換し、これらの型の列を 2005 (9.x) SQL Server実行しているサブスクライバーにレプリケートできるようにします。
0x10000000000 geography 型と geometry 型の列にインデックスをレプリケートします。
0x20000000000 列の SPARSE 属性をレプリケートします。 この属性の詳細については、「 スパース列を使用する」を参照してください。
0x40000000000 スナップショット エージェントによるスクリプト作成を有効にして、サブスクライバーにメモリ最適化テーブルを作成します。
0x80000000000 メモリ最適化アーティクルのクラスター化インデックスを非クラスター化インデックスに変換します。
0x400000000000 非クラスター化列ストア インデックスをテーブルにレプリケートします。
0x800000000000 テーブル上の非クラスター化列ストア インデックスをレプリケートします。
NULL レプリケーション では、schema_option が既定値に自動的に設定されます。この値は、他のアーティクルのプロパティによって異なります。 [解説] セクションの [既定のスキーマ オプション] テーブルには、アーティクルの種類とレプリケーションの種類に基づく既定のスキーマ オプションが表示されます。

SQL Server以外のパブリケーションの既定値は0x050D3です。

レプリケーションとアーティクルの種類ごとに、すべての schema_option 値が有効なわけではありません。 [解説] セクションの [有効なスキーマ オプション] テーブルには、アーティクルの種類とレプリケーションの種類の組み合わせに基づいて選択できる有効なスキーマ オプションが表示されます。

[ @destination_owner = ] 'destination_owner' コピー先オブジェクトの所有者の名前を指定します。 destination_ownersysname で、既定値は NULL です。 destination_ownerが指定されていない場合、所有者は次の規則に基づいて自動的に指定されます。

条件 対象オブジェクトの所有者
パブリケーションでは、ネイティブ モードの一括コピーを使用して初期スナップショットが生成され、SQL Serverサブスクライバーのみがサポートされます。 既定値は source_owner の値です。
SQL Server以外のパブリッシャーから発行されます。 既定では、変換先データベースの所有者が指定されます。
パブリケーションでは、文字モードの一括コピーを使用して初期スナップショットが生成され、SQL Server以外のサブスクライバーがサポートされます。 割り当てられていません。

SQL Server以外のサブスクライバーをサポートするには、destination_ownerが NULL である必要があります。

[ @status = ] status アーティクルがアクティブかどうかを指定し、変更を反映する方法に関する追加のオプションを指定します。 statustinyint で、 |(ビットごとの OR) これらの値の 1 つ以上の積。

説明
1 アーティクルがアクティブです。
8 INSERT ステートメントに列名を含めます。
16 (既定値) パラメーター化されたステートメントを使用します。
24 INSERT ステートメントに列名を含め、パラメーター化されたステートメントを使用します。
64 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

たとえば、パラメーター化されたステートメントを使用するアクティブなアーティクルでは、この列の値は 17 になります。 値 0 は、アーティクルが非アクティブであり、追加のプロパティが定義されていないことを意味します。

[ @source_owner = ] 'source_owner' ソース オブジェクトの所有者です。 source_ownersysname で、既定値は NULL です。 Source_owner は Oracle パブリッシャーに指定する必要があります。

[ @sync_object_owner = ] 'sync_object_owner' パブリッシュされたアーティクルを定義するビューの所有者です。 sync_object_ownersysname で、既定値は NULL です。

[ @filter_owner = ] 'filter_owner' フィルターの所有者です。 filter_ownersysname で、既定値は NULL です。

[ @source_object = ] 'source_object' パブリッシュするデータベース オブジェクトです。 source_objectsysname で、既定値は NULL です。 source_tableが NULL の場合、source_objectを NULL にすることはできません。source_tableの代わりに、source_objectを使用する必要があります。 スナップショット レプリケーションまたはトランザクション レプリケーションを使用してパブリッシュできるオブジェクトの種類の詳細については、「 Publish Data and Database Objects」を参照してください。

[ @artid = ] _article_ID_ OUTPUT 新しいアーティクルのアーティクル ID です。 article_ID は既定の NULL を持つ int であり、OUTPUT パラメーターです。

[ @auto_identity_range = ] 'auto_identity_range' パブリケーションの作成時に、パブリケーションの ID 範囲の自動処理を有効または無効にします。 auto_identity_rangeは nvarchar(5)であり、次のいずれかの値を指定できます。

説明
true ID 範囲の自動処理を有効にします
false 自動 ID 範囲処理を無効にします。
NULL(既定値) ID 範囲の処理は、 identityrangemanagementoption によって設定されます。

Note

auto_identity_range は非推奨となり、下位互換性のみを目的として提供されています。 ID 範囲管理オプションを指定するには、 identityrangemanagementoption を使用する必要があります。 詳細については、「Replicate Identity Columns」 (ID 列のレプリケート) を参照してください。

[ @pub_identity_range = ] pub_identity_range アーティ クルに identityrangemanagementoptionauto に設定されている場合、または true に設定auto_identity_range場合に、パブリッシャーの範囲サイズを制御 しますpub_identity_rangebigint で、既定値は NULL です。 Oracle パブリッシャーではサポートされていません

[ @identity_range = ] identity_range アーティ クルの identityrangemanagementoptionauto または auto_identity_range true に設定されている場合に、サブスクライバーの範囲サイズを制御 しますidentity_rangebigint で、既定値は NULL です。 auto_identity_rangeが true に設定されている場合に使用されますOracle パブリッシャーではサポートされていません

[ @threshold = ] thresholdディストリビューション エージェントが新しい ID 範囲を割り当てるタイミングを制御するパーセンテージ値です。 しきい値で指定された値の割合を使用すると、ディストリビューション エージェントによって新しい ID 範囲が作成されます。 thresholdbigint で、既定値は NULL です。 identityrangemanagementoptionauto に設定されている場合、またはauto_identity_rangeが true に設定されている場合に使用されますOracle パブリッシャーではサポートされていません

[ @force_invalidate_snapshot = ] force_invalidate_snapshot このストアド プロシージャによって実行されたアクションによって、既存のスナップショットが無効になる可能性があることを確認します。 force_invalidate_snapshot少しで、既定値は 0 です。

0 は、アーティクルを追加してもスナップショットが無効にならないことを指定します。 変更に新しいスナップショットが必要であることをストアド プロシージャが検出すると、エラーが発生し、変更は加えられません。

1 は、アーティクルを追加するとスナップショットが無効になる可能性があることを指定し、新しいスナップショットを必要とするサブスクリプションが存在する場合は、既存のスナップショットを古いスナップショットとしてマークし、新しいスナップショットを生成するためのアクセス許可を付与します。

[ @use_default_datatypes = ] use_default_datatypes Oracle パブリッシャーからアーティクルを発行するときに、既定の列データ型マッピングを使用するかどうかを指定します。 use_default_datatypes はビットで、既定値は 1 です。

1 = 既定のアーティクル列マッピングが使用されます。 既定のデータ型マッピングは、 sp_getdefaultdatatypemappingを実行して表示できます。

0 = カスタム アーティクル列マッピングが定義されているため、 sp_articleviewsp_addarticleによって呼び出されません。

use_default_datatypes0 に設定されている場合は、既定値から変更される列マッピングごとにsp_changearticlecolumndatatypeを 1 回実行する必要があります。 すべてのカスタム列マッピングが定義されたら、 sp_articleviewを実行する必要があります。

Note

このパラメーターは、Oracle パブリッシャーでのみ使用する必要があります。 SQL Server Publisher に対して use_default_datatypes を 0 に設定すると、エラーが発生します。

[ @identityrangemanagementoption = ] identityrangemanagementoption アーティクルの ID 範囲管理の処理方法を指定します。 identityrangemanagementoptionnvarchar(10)であり、次のいずれかの値を指定できます。

説明
"なし" 明示的な ID 範囲の管理は行われません。 このオプションは、以前のバージョンのSQL Serverとの下位互換性のためにのみ推奨されます。 ピア レプリケーションは許可されません。
手動 NOT FOR REPLICATION を使用して ID 列をマークし、手動の ID 範囲処理を有効にします。
auto ID 範囲の自動管理を指定します。
NULL(既定値) auto_identity_rangeの値が true でない場合、既定値は noneです。 ピア ツー ピア トポロジの既定値では、既定値は manual です (auto_identity_range は無視されます)。

下位互換性のために、 identityrangemanagementoption の値が NULL の場合、 auto_identity_range の値がチェックされます。 ただし、 identityrangemanagementoption の値が NULL でない場合、 auto_identity_range の値は無視されます。

詳細については、「Replicate Identity Columns」 (ID 列のレプリケート) を参照してください。

[ @publisher = ] 'publisher'SQL Server以外のパブリッシャーを指定します。 publishersysname で、既定値は NULL です。

Note

publisher は、SQL Server パブリッシャーにアーティクルを追加するときに使用しないでください。

[ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' 初期スナップショットが適用されたときにレプリケートされたユーザー トリガーが実行される場合は です。 fire_triggers_on_snapshotnvarchar(5)で、既定値は FALSE です。 true は 、スナップショットが適用されるときに、レプリケートされたテーブルに対するユーザー トリガーが実行されることを意味します。 トリガーをレプリケートするには、schema_optionのビットマスク値に0x100値を含める必要があります。

リターン コードの値

0 (成功) または 1 (失敗)

解説

sp_addarticle は、スナップショット レプリケーションまたはトランザクション レプリケーションで使用されます。

既定では、列データ型がレプリケーションによってサポートされていない場合は、レプリケーションによってソース テーブル内の列がパブリッシュされることはありません。 このような列を発行する必要がある場合は、 sp_articlecolumn を実行して列を追加する必要があります。

ピアツーピア トランザクション レプリケーションをサポートするパブリケーションにアーティクルを追加する場合、次の制限が適用されます。

  • パラメーター化されたステートメントは、すべてのログベースアーティクルに対して指定する必要があります。 状態値には 16 を含める必要があります。

  • 変換先テーブルの名前と所有者は、ソース テーブルと一致している必要があります。

  • アーティクルは、行方向または列方向にフィルター選択することはできません。

  • 自動 ID 範囲管理はサポートされていません。 identityrangemanagementoption には manual の値を指定する必要があります。

  • テーブルにタイムスタンプ列が存在する場合、列をタイムスタンプとしてレプリケートするには、schema_optionに0x08を含める必要があります。

  • ins_cmdupd_cmd、del_cmdSQL値を指定することはできません。

詳細については、「ピア ツー ピア トランザクション レプリケーション」を参照してください。

オブジェクトを発行すると、その定義がサブスクライバーにコピーされます。 1 つ以上の他のオブジェクトに依存するデータベース オブジェクトをパブリッシュする場合は、すべての参照オブジェクトをパブリッシュする必要があります。 たとえば、テーブルに依存しているビューをパブリッシュする場合は、そのテーブルもパブリッシュする必要があります。

vertical_partitiontrue に設定されている場合、sp_addarticle sp_articleviewが呼び出されるまでビューの作成を延期します (最後のsp_articlecolumnが追加された後)。

パブリケーションでサブスクリプションの更新が許可され、パブリッシュされたテーブルに uniqueidentifier 列がない場合、 sp_addarticleuniqueidentifier 列をテーブルに自動的に追加します。

SQL Server (異種レプリケーション) のインスタンスではないサブスクライバーにレプリケートする場合、INSERTUPDATEDELETE コマンドでは Transact-SQL ステートメントのみがサポートされます。

ログ リーダー エージェントが実行されている場合、ピア ツー ピア パブリケーションにアーティクルを追加すると、ログ リーダー エージェントとアーティクルを追加するプロセスの間でデッドロックが発生する可能性があります。 この問題を回避するには、ピア ツー ピア パブリケーションにアーティクルを追加する前に、レプリケーション モニターを使用して、アーティクルを追加するノードでログ リーダー エージェントを停止します。 記事を追加した後、ログ リーダー エージェントを再起動します。

または を@ins_cmd = 'NONE'設定@del_cmd = 'NONE'する場合、境界付き更新が発生したときにこれらのコマンドを送信しないことによって、UPDATE コマンドの伝達も影響を受ける可能性があります。 (有界更新は、サブスクライバー上で DELETE/INSERT ペアとしてレプリケートされる、パブリッシャーからの UPDATE ステートメントの種類です)。

既定のスキーマ オプション

次の表では、 schema_options がユーザーによって指定されていない場合にレプリケーションによって設定される既定値について説明します。この値は、レプリケーションの種類 (上部に表示) とアーティクルの種類 (最初の列の下に表示) によって異なります。

記事の種類 トランザクション レプリケーション スナップショット レプリケーション
aggregate schema only 0x01 0x01
func スキーマのみ 0x01 0x01
インデックス付きビュー スキーマのみ 0x01 0x01
indexed view logbased 0x30F3 0x3071
インデックス付きビューのログベースの manualboth 0x30F3 0x3071
indexed view logbased manualfilter 0x30F3 0x3071
indexed view 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
view schema only 0x01 0x01

Note

パブリケーションでキュー更新が有効になっている場合は、テーブルに表示される既定値に0x80のschema_option値が追加されます。 SQL Server以外のパブリケーションの既定のschema_optionは0x050D3

有効なスキーマ オプション

次の表では、レプリケーションの種類 (上部に表示) とアーティクルの種類 (最初の列の下に表示) に基づいて、 schema_option の許容値について説明します。

記事の種類 トランザクション レプリケーション スナップショット レプリケーション
logbased すべてのオプション 0x02以外のすべてのオプション
logbased manualfilter すべてのオプション 0x02以外のすべてのオプション
logbased manualview すべてのオプション 0x02以外のすべてのオプション
indexed view logbased すべてのオプション 0x02以外のすべてのオプション
indexed view logbased manualfilter すべてのオプション 0x02以外のすべてのオプション
indexed view logbased manualview すべてのオプション 0x02以外のすべてのオプション
インデックス付きビューのログベースの manualboth すべてのオプション 0x02以外のすべてのオプション
proc exec 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000
serializable proc exec 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000
proc スキーマのみ 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000
view schema only 0x010x0100x0200x0400x01000x20000x40000、0x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000 0x010x0100x0200x0400x01000x20000x40000、0x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000
func スキーマのみ 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000 0x010x200x20000x4000000x800000、0x20000000x80000000x100000000x200000000x400000000x80000000
インデックス付きビュー スキーマのみ 0x010x0100x0200x0400x01000x20000x40000、0x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000 0x010x0100x0200x0400x01000x20000x40000、0x1000000x2000000x4000000x8000000x20000000x80000000x400000000x80000000

Note

キュー更新パブリケーションの場合は、0x8000と0x80schema_option値を有効にする必要があります。 SQL Server以外のパブリケーションでサポートされているschema_option値は、0x010x020x100x400x80、0x10000x40000X8000です。

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実行できます。

参照

アーティクルの定義
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)
データとデータベース オブジェクトのパブリッシュ