sp_addarticle (Transact-SQL)

更新 : 2006 年 4 月 14 日

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

トピック リンク アイコン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'
    目的のアーティクルを含むパブリケーションの名前を指定します。名前はデータベース内で一意であることが必要です。publication のデータ型は sysname で、既定値はありません。
  • [ @article = ] 'article'
    アーティクルの名前を指定します。名前はパブリケーション内で一意であることが必要です。article のデータ型は sysname で、既定値はありません。
  • [ @source_table = ] 'source_table'
    このパラメータは廃止予定になっており、スクリプトの旧バージョンとの互換性を維持するためにサポートされています。このパラメータではなく、source_object を使用してください。このパラメータは、Oracle パブリッシャに対してはサポートされていません。
  • [ @destination_table = ] 'destination_table'
    レプリケーション先 (サブスクリプション) テーブルが source_table またはストアド プロシージャと異なる場合に、レプリケーション先テーブルの名前を指定します。destination_table のデータ型は sysname で、既定値は NULL です。既定値の場合は、source_tabledestination_table は同一と見なされます。
  • [ @vertical_partition = ] 'vertical_partition'
    テーブル アーティクル上の列フィルタ選択を有効または無効にします。vertical_partition のデータ型は nchar(5) で、既定値は FALSE です。

    false は、列フィルタ選択を行わずに、すべての列をパブリッシュすることを示します。

    true は、宣言された主キー、既定値を持たない NULL 値を許容する列、および一意なキー列を除くすべての列を消去します。列は、sp_articlecolumn を使用して追加されます。

  • [ @type = ] 'type'
    アーティクルの種類を指定します。type のデータ型は sysname で、次のいずれかの値を指定できます。

    説明

    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 schema only

    スキーマのみを使用するプロシージャ。Oracle パブリッシャに対してはサポートされていません。

    serializable proc exec

    シリアライゼーション可能なトランザクションのコンテキスト内で実行される場合にのみ、ストアド プロシージャの実行をレプリケートします。Oracle パブリッシャに対してはサポートされていません。

    view schema only

    スキーマのみを使用するビュー。Oracle パブリッシャに対してはサポートされていません。このオプションを使用する場合は、ベース テーブルもパブリッシュする必要があります。

  • [ @filter = ] 'filter'
    FOR REPLICATION によって作成され、テーブルの行フィルタ選択に使用されるストアド プロシージャを指定します。filter のデータ型は nvarchar(386) で、既定値は NULL です。ビュー ストアド プロシージャとフィルタ ストアド プロシージャを作成するには、sp_articleviewsp_articlefilter を手動で実行する必要があります。NULL 以外を指定した場合は、ストアド プロシージャが手動で作成されるものと見なされるため、フィルタ プロシージャは作成されません。
  • [ @sync_object = ] 'sync_object'
    アーティクルのスナップショットに対応するデータ ファイルの生成に使用されるテーブルまたはビューの名前を指定します。sync_object のデータ型は nvarchar(386) で、既定値は NULL です。NULL を指定した場合は、sp_articleview が自動的に呼び出され、出力ファイルの生成に使用されるビューが作成されます。これは、sp_articlecolumn で列を追加した後に行われます。NULL 以外を指定した場合は、ビューが手動で作成されるものと見なされるため、ビューは作成されません。
  • [ @ins_cmd = ] 'ins_cmd'
    アーティクルの挿入をレプリケートするときに使用するレプリケーション コマンドの種類を指定します。ins_cmd のデータ型は nvarchar(255) で、次のいずれかの値を指定できます。

    説明

    NONE

    操作が行われません。

    CALL sp_MSins_table (既定値)

    または

    CALL custom_stored_procedure_name

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

    SQL または NULL

    INSERT ステートメントをレプリケートします。INSERT ステートメントでは、アーティクル内にある、パブリッシュされるすべての列の値が指定されます。次のコマンドは挿入時にレプリケートされます。

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

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

  • [ @del_cmd =] 'del_cmd'
    アーティクルの削除をレプリケートするときに使用するレプリケーション コマンドの種類を指定します。del_cmd のデータ型は nvarchar(255) で、次のいずれかの値を指定できます。

    説明

    NONE

    操作が行われません。

    CALLsp_MSdel_table (既定値)

    または

    CALL custom_stored_procedure_name

    サブスクライバ側で実行されるストアド プロシージャを呼び出します。この方法でレプリケーションを行うには、schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバのレプリケーション先データベース内で、指定されたストアド プロシージャを作成します。custom_stored_procedure はユーザーが作成したストアド プロシージャの名前です。sp_MSdel_table_table の部分にはレプリケーション先テーブルの名前が入ります。destination_owner を指定する場合は、レプリケーション先テーブル名の前に指定します。たとえば、サブスクライバの Production スキーマによって所有されている ProductCategory テーブルの場合、このパラメータは CALL sp_MSdel_ProductionProductCategory になります。ピアツーピア レプリケーション トポロジ内のアーティクルの場合は、GUID 値に _table を付加します。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 =] 'upd_cmd'
    アーティクルの更新をレプリケートするときに使用するレプリケーション コマンドの種類を指定します。upd_cmd のデータ型は nvarchar(255) で、次のいずれかの値を指定できます。

    説明

    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 を指定する場合は、レプリケーション先テーブル名の前に指定します。たとえば、サブスクライバの Production スキーマによって所有されている ProductCategory テーブルの場合、このパラメータは MCALL sp_MSupd_ProductionProductCategory になります。ピアツーピア レプリケーション トポロジ内のアーティクルの場合は、GUID 値に _table を付加します。サブスクライバの更新では、ユーザーが作成したストアド プロシージャを指定できません。

    SCALL sp_MSupd_table (既定値)

    または

    SCALL custom_stored_procedure_name

    SCALL スタイルのパラメータを使用してストアド プロシージャを呼び出します。この方法でレプリケーションを行うには、schema_option を使用してストアド プロシージャの自動作成を指定するか、アーティクルの各サブスクライバのレプリケーション先データベース内で、指定されたストアド プロシージャを作成します。custom_stored_procedure はユーザーが作成したストアド プロシージャの名前です。sp_MSupd_table_table の部分にはレプリケーション先テーブルの名前が入ります。destination_owner を指定する場合は、レプリケーション先テーブル名の前に指定します。たとえば、サブスクライバの Production スキーマによって所有されている ProductCategory テーブルの場合、このパラメータは SCALL sp_MSupd_ProductionProductCategory になります。ピアツーピア レプリケーション トポロジ内のアーティクルの場合は、GUID 値に _table を付加します。サブスクライバの更新では、ユーザーが作成したストアド プロシージャを指定できません。

    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
    ms173857.note(ja-jp,SQL.90).gifメモ :
    構文が CALL 構文、MCALL 構文、SCALL 構文、および XCALL 構文のいずれであるかによって、サブスクライバに反映されるデータの量が異なります。CALL 構文では、挿入されたすべての列および削除されたすべての列に関するすべての値が渡されます。SCALL 構文では、影響を受けた列の値のみが渡されます。XCALL 構文では、列が変更されているかどうかに関係なく、列の以前の値を含むすべての列の値が渡されます。詳細については、「トランザクション アーティクルに変更を反映する方法の指定」を参照してください。
  • [ @creation_script =] 'creation_script'
    オプションのアーティクル スキーマ スクリプトのパスと名前を指定します。このスクリプトは、サブスクリプション データベースでアーティクルを作成する場合に使用されます。creation_script のデータ型は nvarchar(255) で、既定値は NULL です。
  • [ @description =] 'description'
    アーティクルの説明エントリを指定します。description のデータ型は nvarchar(255) で、既定値は NULL です。
  • [ @pre_creation_cmd =] 'pre_creation_cmd'
    このアーティクルのスナップショットを適用したときに、サブスクライバ側で同じ名前の既存のオブジェクトが検出された場合に取る措置を指定します。pre_creation_cmd のデータ型は nvarchar(10) で、次のいずれかの値を指定できます。

    説明

    none

    コマンドを使用しません。

    delete

    スナップショットを適用する前に、レプリケーション先テーブルからデータを削除します。アーティクルが行方向にフィルタ選択されている場合、フィルタによって指定された列のデータのみが削除されます。行フィルタが定義されている場合は、Oracle パブリッシャに対してはサポートされません。

    drop (既定値)

    レプリケーション先テーブルを破棄します。

    truncate

    レプリケーション先テーブルを切り捨てます。ODBC サブスクライバまたは OLE DB サブスクライバに対しては無効です。

  • [ @filter_clause=] 'filter_clause'
    行フィルタを定義する制限句 (WHERE) を指定します。制限句を入力する場合は、WHERE キーワードを省略します。filter_clause のデータ型は ntext で、既定値は NULL です。詳細については、「パブリッシュされたデータのフィルタ選択」を参照してください。
  • [ @schema_option =] schema_option
    特定のアーティクルに対するスキーマ生成オプションのビットマスクを指定します。schema_option のデータ型は binary(8) で、次の 1 つ以上の値から求めた | (ビット演算子 OR) 演算の結果を指定できます。

    ms173857.note(ja-jp,SQL.90).gifメモ :
    この値が NULL の場合は、他のアーティクルのプロパティに応じて、アーティクルの有効なスキーマ オプションが自動生成されます。「解説」に記載されている「既定のスキーマ オプション」の表は、アーティクルの種類とレプリケーションの種類の組み合わせに基づいて選択される値を示しています。

  • [ @destination_owner =] 'destination_owner'
    レプリケーション先オブジェクトの所有者の名前を指定します。destination_owner のデータ型は sysname で、既定値は NULL です。destination_owner を指定しない場合は、次のルールに基づいて所有者が自動的に指定されます。

    条件 対象オブジェクトの所有者

    パブリケーションはネイティブ モードの一括コピーを使用して、SQL Server サブスクライバのみをサポートする初期スナップショットを生成します。

    既定値 source_owner の値に設定されます。

    SQL Server 以外のパブリッシャからパブリッシュされます。

    既定では、レプリケーション先データベースの所有者に設定されます。

    パブリケーションはキャラクタ モードの一括コピーを使用して、SQL Server 以外のサブスクライバをサポートする初期スナップショットを生成します。

    割り当てられていません。

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

  • [ @status=] status
    アーティクルがアクティブであるかどうか、および変更がどのように反映されるかについての追加オプションを指定します。status のデータ型は tinyint で、次の 1 つ以上の値から求めた | (ビット演算子 OR) 演算の結果を指定できます。

  • [ @source_owner =] 'source_owner'
    ソース オブジェクトの所有者を指定します。source_owner のデータ型は sysname で、既定値は NULL です。Oracle パブリッシャに対しては source_owner を指定する必要があります。
  • [ @sync_object_owner =] 'sync_object_owner'
    パブリッシュされたアーティクルを定義するビューの所有者を指定します。sync_object_owner のデータ型は sysname で、既定値は NULL です。
  • [ @filter_owner =] 'filter_owner'
    フィルタの所有者を指定します。filter_owner のデータ型は sysname で、既定値は NULL です。
  • [ @source_object =] 'source_object'
    パブリッシュされるデータベース オブジェクトを指定します。source_object のデータ型は sysname で、既定値は NULL です。source_table が NULL である場合、source_object を NULL にすることはできません。source_table を使用する代わりに、source_object を使用してください。**スナップショット レプリケーションまたはトランザクション レプリケーションを使用してパブリッシュできるオブジェクトの種類の詳細については、「データとデータベース オブジェクトのパブリッシュ」を参照してください。
  • [ @artid = ] article_ID OUTPUT
    新しいアーティクルのアーティクル ID です。article_ID のデータ型は int で、既定値は NULL です。このパラメータは OUTPUT パラメータです。
  • [ @auto_identity_range = ] 'auto_identity_range'
    パブリケーションの作成時、パブリケーションでの自動 ID 範囲処理を有効または無効にします。auto_identity_range のデータ型は nvarchar(5) で、次のいずれかの値を指定できます。

    説明

    true

    自動 ID 範囲処理を有効にします。

    false

    自動 ID 範囲処理を無効にします。

    NULL (既定値)

    ID 範囲処理は identityrangemanagementoption によって設定されます。

    ms173857.note(ja-jp,SQL.90).gifメモ :
    auto_identity_range は推奨されておらず、旧バージョンとの互換性のためのみに用意されています。ID 範囲の管理オプションを指定するには、identityrangemanagementoption を使用してください。詳細については、「ID 列のレプリケート」を参照してください。
  • [ @pub_identity_range = ] pub_identity_range
    アーティクルの identityrangemanagementoptionauto に設定されている場合、または auto_identity_rangetrue に設定されている場合、パブリッシャ側の範囲の大きさを制御します。pub_identity_range のデータ型は bigint で、既定値は NULL です。Oracle パブリッシャに対してはサポートされていません
  • [ @identity_range = ] identity_range
    アーティクルの identityrangemanagementoptionauto に設定されている場合、または auto_identity_rangetrue に設定されている場合、サブスクライバ側の範囲の大きさを制御します。identity_range のデータ型は bigint で、既定値は NULL です。auto_identity_rangetrue に設定されているときに使用します。Oracle パブリッシャに対してはサポートされていません
  • [ @threshold = ] threshold
    ディストリビューション エージェントがどの時点で新しい ID 範囲を割り当てるかを制御するパーセンテージの値を指定します。threshold で指定されている値のパーセンテージが使用されると、ディストリビューション エージェントは新しい ID 範囲を作成します。threshold のデータ型は bigint で、既定値は NULL です。identityrangemanagementoptionauto に設定されているとき、または auto_identity_rangetrue に設定されているときに使用します。Oracle パブリッシャに対してはサポートされていません
  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    このストアド プロシージャが実行する操作によって既存のスナップショットが無効になることを許可します。force_invalidate_snapshot のデータ型は bit で、既定値は 0 です。

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

    1 に設定すると、アーティクルの追加によってスナップショットが無効になることがあります。また、新しいスナップショットを必要とするサブスクリプションがある場合は、既存のスナップショットに古いスナップショットのマークを付けて、新しいスナップショットを生成することができます。

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

    1 の場合、既定のアーティクル列のマッピングが使用されます。既定のデータ型のマッピングは、sp_getdefaultdatatypemapping を実行することによって表示できます。

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

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

    ms173857.note(ja-jp,SQL.90).gifメモ :
    このパラメータは、Oracle パブリッシャにのみ使用されます。SQL Server パブリッシャに対して use_default_datatypes0 に設定すると、エラーが生成されます。
  • [ @identityrangemanagementoption = ] identityrangemanagementoption
    アーティクルに対する ID 範囲の管理がどのように処理されるかを指定します。identityrangemanagementoption のデータ型は nvarchar(10) で、次のいずれかの値を指定できます。

    説明

    none

    明示的な ID 範囲の管理は行われません。このオプションは、旧バージョンの SQL Server との互換性を維持する目的でのみ使用することをお勧めします。ピア レプリケーションに対しては使用できません。

    manual

    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 の値が無視されます。**

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

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

    ms173857.note(ja-jp,SQL.90).gifメモ :
    アーティクルを SQL Server パブリッシャに追加するときは、publisher を使用しないでください。
  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    初期スナップショットが適用されるときに、レプリケートされたユーザー トリガが実行されるかどうかを示します。fire_triggers_on_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。true は、スナップショットが適用されるときに、レプリケートされたテーブル上でユーザー トリガが実行されることを表します。トリガをレプリケートするには、schema_option のビットマスク値に値 0x100 を含める必要があります。

リターン コードの値

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

解説

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

既定では、列データ型がレプリケーションによってサポートされていない場合は、レプリケーションによってソース テーブル内の列がパブリッシュされることはありません。このような列をパブリッシュする場合は、sp_articlecolumn を実行して列を追加する必要があります。詳細については、「すべての種類のレプリケーションに共通する注意点」を参照してください。

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

  • パラメータ化されたステートメントをすべてのログベースのアーティクルに対して指定する必要があります。status 値に 16 を指定する必要があります。
  • レプリケーション先テーブルの名前と所有者は、ソース テーブルと一致する必要があります。
  • アーティクルは、行方向または列方向にフィルタ選択することはできません。
  • 自動 ID 範囲管理はサポートされていません。identityrangemanagementoption に対して値 manual を指定する必要があります。
  • テーブル内に timestamp 列が存在する場合は、schema_option に 0x08 を指定し、列を timestamp としてレプリケートする必要があります。
  • ins_cmdupd_cmd、および del_cmd には、値 SQL を指定できません。

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

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

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

パブリケーションで更新サブスクリプションが許可されている場合、パブリッシュされたテーブルに uniqueidentifier 列がないときは、sp_addarticle によって uniqueidentifier 列がテーブルに自動的に追加されます。

変換可能なサブスクリプションをサポートしているアーティクルでは、ins_cmddel_cmd、および upd_cmd に指定されている値が無視されます。**

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

次の表では、schema_options がユーザーによって指定されていない場合に、レプリケーションによって設定される既定値について説明します。既定値は、レプリケーションの種類 (トランザクションまたはスナップショット) とアーティクルの種類 (1 列目のデータ) によって異なります。

アーティクルの種類 レプリケーションの種類  

 

トランザクション

スナップショット

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase 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 schema only

0x01

0x01

serialized proc exec

0x01

0x01

view schema only

0x01

0x01

ms173857.note(ja-jp,SQL.90).gifメモ :
パブリケーションでキュー更新が有効になっている場合は、schema_option0x80 が、表の既定値に加わります。SQL Server 以外のパブリケーションの schema_option の既定値は、0x050D3 です。

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

この表では、レプリケーションの種類 (トランザクションまたはスナップショット) とアーティクルの種類 (1 列目のデータ) に基づいて、schema_option に指定できる値について説明します。

アーティクルの種類 レプリケーションの種類  

 

トランザクション

スナップショット

logbased

すべてのオプション

0x02 を除くすべてのオプション

logbased manualfilter

すべてのオプション

0x02 を除くすべてのオプション

logbased manualview

すべてのオプション

0x02 を除くすべてのオプション

indexed view logbased

すべてのオプション

0x02 を除くすべてのオプション

indexed view logbased manualfilter

すべてのオプション

0x02 を除くすべてのオプション

indexed view logbased manualview

すべてのオプション

0x02 を除くすべてのオプション

indexed view logbase manualboth

すべてのオプション

0x02 を除くすべてのオプション

proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

serialized proc exec

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

proc schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x40000000、および 0x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x40000000、および 0x80000000

func schema only

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

0x010x200x20000x4000000x8000000x20000000x80000000x100000000x200000000x40000000、および 0x80000000

indexed view schema only

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x40000000、および 0x80000000

0x010x0100x0200x0400x01000x20000x400000x1000000x2000000x4000000x8000000x20000000x80000000x40000000、および 0x80000000

ms173857.note(ja-jp,SQL.90).gifメモ :
キュー更新パブリケーションの場合は、schema_option0x8000 および 0x80 を有効にする必要があります。SQL Server 以外のパブリケーションに対してサポートされている schema_option 値は、0x010x020x100x400x800x10000x4000、および 0X8000 です。

権限

sp_addarticle を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバだけです。

使用例

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

参照

関連項目

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)

その他の技術情報

アーティクルを定義する方法 (レプリケーション Transact-SQL プログラミング)
データとデータベース オブジェクトのパブリッシュ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

変更内容 :
  • schema_option パラメータの 0x20000000 値についての説明を更新。

2005 年 12 月 5 日

新しい内容
  • schema_option パラメータに 0x20 オプションを設定する場合の追加制約についての説明を追加。
変更内容
  • type パラメータでサポートされるオプションについて明記。
  • creation_script パラメータのサイズを修正。