sp_articlecolumn (Transact-SQL)

Se aplica a:SQL Server

Se utiliza para especificar las columnas incluidas en el artículo para filtrar verticalmente los datos de una tabla publicada. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación que contiene este artículo. @publication es sysname, sin ningún valor predeterminado.

[ @article = ] N'article'

Nombre del artículo. @article es sysname, sin ningún valor predeterminado.

[ @column = ] N'column'

Nombre de la columna que se va a agregar o quitar. @column es sysname, con un valor predeterminado de NULL. Si NULLes , se publican todas las columnas.

[ @operation = ] N'operation'

Especifica si se agregan o se quitan columnas en un artículo. @operation es nvarchar(5), con un valor predeterminado de add.

  • add marca la columna para la replicación.
  • drop desmarca la columna.

[ @refresh_synctran_procs = ] refresh_synctran_procs

Especifica si se vuelven a generar los procedimientos almacenados compatibles con las suscripciones de actualización inmediata para que coincidan con el número de columnas replicadas. @refresh_synctran_procs es bit, con un valor predeterminado de 1. Si 1es , se vuelven a generar los procedimientos almacenados.

[ @ignore_distributor = ] ignore_distributor

Indica si este procedimiento almacenado se ejecuta sin conectarse con el distribuidor. @ignore_distributor es bit, con un valor predeterminado de 0.

  • Si 0es , la base de datos debe estar habilitada para la publicación y la memoria caché de artículos debe actualizarse para reflejar las nuevas columnas replicadas por el artículo.
  • Si 1es , permite quitar columnas de artículo para artículos que residen en una base de datos no publicada; solo se debe usar en situaciones de recuperación.

[ @change_active = ] change_active

Permite modificar las columnas en publicaciones con suscripciones. @change_active es int, con un valor predeterminado de 0.

  • Si 0es , las columnas no se modifican.
  • Si 1es , se pueden agregar o quitar columnas de los artículos activos que tienen suscripciones.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Confirma que la acción realizada por este procedimiento almacenado podría invalidar una instantánea existente. @force_invalidate_snapshot es bit, con un valor predeterminado de 0.

  • 0 especifica que los cambios realizados en el artículo no hacen que la instantánea no sea válida. Si el procedimiento almacenado detecta que el cambio requiere una nueva instantánea, se producirá un error y no se realizarán cambios.
  • 1 especifica que los cambios realizados en el artículo pueden hacer que la instantánea no sea válida y, si hay suscripciones existentes que requerirían una nueva instantánea, concede permiso para que la instantánea existente se marque como obsoleta y se genere una nueva instantánea.

[ @force_reinit_subscription = ] force_reinit_subscription

Confirma que la acción realizada por este procedimiento almacenado puede requerir la reinicialización de las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0.

  • 0 especifica que los cambios realizados en el artículo no hacen que se reinicialice la suscripción. Si el procedimiento almacenado detecta que el cambio requiere la reinicialización de suscripciones, se producirá un error y no se realizarán cambios.
  • 1 especifica que los cambios realizados en el artículo hacen que las suscripciones existentes se reinicialicen y concede permiso para que se produzca la reinicialización de la suscripción.

[ @publisher = ] N'publisher'

Especifica un publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL.

@publisher no debe usarse con un publicador de SQL Server.

[ @internal = ] internal

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_articlecolumn se usa en la replicación de instantáneas y la replicación transaccional.

Solo se puede filtrar un artículo cancelado mediante sp_articlecolumn.

Ejemplos

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

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_articlecolumn.