sp_articlecolumn (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン)

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

トピック リンク アイコン 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' このアーティクルを含むパブリケーションの名前を指定します。 publicationsysname,、既定値はありません。

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

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

[ @operation = ] 'operation' アーティクルの列を追加または削除するかどうかを指定します。 操作nvarchar (5),、既定値は add です。 add は、レプリケーションの列にマークを付けます。 drop は列をマーク解除します。

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

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

[ @change_active = ] change_active サブスクリプションを持つパブリケーションの列を変更できます。 change_activeint で、既定値は 0 です。 0 の場合、列は変更されません。 1 の場合、サブスクリプションを持つアクティブなアーティクルに対して列の追加や削除を行うことができます。

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

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

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

[@force_reinit_subscription = ] force_reinit_subscription
このストアドプロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 force_reinit_subscriptionビット,、既定値は 0 です。

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

[ @publisher = ] 'publisher'非 Publisher を指定し Microsoft SQL Server ます。 publishersysname で、既定値は NULL です。

注意

パブリッシャー を Publisher と共に使用することはできません SQL Server 。

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

リターン コードの値

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

Remarks

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 のメンバーだけです。

参照

Define an Article
列フィルターを定義および変更する
パブリッシュされたデータのフィルター処理
sp_addarticle (transact-sql SQL)
sp_articleview (transact-sql SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (transact-sql SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)