sp_articlecolumn (Transact-SQL)

パブリッシュされたテーブルで列方向にデータをフィルター選択するために、アーティクルに含まれている列を指定します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_articlecolumn [ @publication = ] 'publication' 
        , [ @article = ] 'article'
    [ , [ @column = ] 'column' ]
    [ , [ @operation = ] 'operation' ]
    [ , [ @refresh_synctran_procs = ] refresh_synctran_procs ]
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @change_active = ] change_actve ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @internal = ] 'internal' ]

引数

  • [ @publication=] 'publication'
    このアーティクルを含むパブリケーションの名前を指定します。 publication のデータ型は sysname で、既定値はありません。

  • [ @article=] 'article'
    アーティクルの名前を指定します。 article のデータ型は sysname で、既定値はありません。

  • [ @column=] 'column'
    追加または削除する列の名前を指定します。 column のデータ型は sysname で、既定値は NULL です。 NULL の場合はすべての列がパブリッシュされます。

  • [ @operation=] 'operation'
    アーティクルの列を追加するか削除するかを指定します。 operation のデータ型は nvarchar(5) で、既定値は add です。 add の場合はレプリケーションする列にマークが付けられます。 drop の場合は列のマークが外されます。

  • [ @refresh_synctran_procs=] refresh_synctran_procs
    レプリケートされた列数と一致するように、即時更新サブスクリプションをサポートするストアド プロシージャを再生成するかどうかを指定します。 refresh_synctran_procs のデータ型は bit で、既定値は 1 です。 1 の場合は、ストアド プロシージャが再生成されます。

  • [ @ignore_distributor =] ignore_distributor
    ディストリビューターに接続せずに、このストアド プロシージャを実行するかどうかを指定します。 ignore_distributor のデータ型は bit で、既定値は 0 です。 0 の場合は、データベースのパブリッシングを有効にする必要があり、アーティクルによってレプリケートされた新しい列を反映させるためにアーティクル キャッシュを更新する必要があります。 1 の場合、アーティクルの列は、パブリッシュされていないデータベースのアーティクルに対して削除できます。復元状況でのみ使用されます。

  • [ @change_active = ] change_active
    サブスクリプションを持つパブリケーションの列の変更を許可します。 change_active のデータ型は int で、既定値は 0 です。 0 の場合、列は変更されません。 1 の場合、サブスクリプションを持つアクティブなアーティクルに対して列を追加または削除できます。

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    このストアド プロシージャが実行する操作によって既存のスナップショットが無効になることを許可します。 force_invalidate_snapshot のデータ型は bit で、既定値は 0 です。

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

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

  • [@force_reinit_subscription = ] force_reinit_subscription
    このストアド プロシージャが実行する操作によって、既存のサブスクリプションの再初期化が必要になることを許可します。 force_reinit_subscription のデータ型は bit で、既定値は 0 です。

    0 に設定すると、アーティクルへの変更によってサブスクリプションが再初期化されることはありません。 変更にサブスクリプションの再初期化が必要であることをストアド プロシージャが検出すると、エラーが発生し、変更は加えられません。 1 は、アーティクルの変更によって既存のサブスクリプションが再初期化されることを示し、サブスクリプションの再初期化を許可します。

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

    注意

    SQL Server パブリッシャーに publisher を使用しないでください。

  • [ @internal= ] 'internal'
    内部使用のみです。

戻り値

成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。

説明

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

sp_articlecolumn では、サブスクライブされていないアーティクルのみフィルターにより選択できます。

使用例

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 を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバーだけです。

関連項目

参照

sp_addarticle (Transact-SQL)

sp_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

レプリケーション ストアド プロシージャ (Transact-SQL)

概念

アーティクルの定義

列フィルターの定義および変更

パブリッシュされたデータのフィルター選択