sp_articlecolumn (Transact-SQL)

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 publicaciones.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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' ]

Argumentos

  • [ @publication=] 'publication'
    Es el nombre de la publicación que contiene este artículo. publication es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @article=] 'article'
    Es el nombre del artículo. article es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @column=] 'column'
    Es el nombre de la columna que se va a agregar o quitar. column es de tipo sysname y su valor predeterminado es NULL. Si es NULL, se publican todas las columnas.

  • [ @operation=] 'operation'
    Especifica si se agregan o se quitan columnas en un artículo. operation es de tipo nvarchar(5) y su valor predeterminado es add. El valor add marca la columna para la replicación. El valor drop anula la selección de 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 de tipo bit y su valor predeterminado es 1. Si el valor es 1, 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 de tipo bit y su valor predeterminado es 0. Si el valor es 0, la base de datos debe estar habilitada para publicación y la caché de artículos debe actualizarse para que refleje las nuevas columnas replicadas por el artículo. Si el valor es 1, permite quitar columnas de los artículos que residen en una base de datos no publicada y solo se debe utilizar en situaciones de recuperación.

  • [ @change_active = ] change_active
    Permite modificar las columnas en publicaciones con suscripciones. change_active es de tipo int y su valor predeterminado es 0. Si el valor es 0, las columnas no se modifican. Si es 1, se puede 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 puede invalidar una instantánea existente. force_invalidate_snapshot es de tipo bit y su valor predeterminado es 0.

    0 especifica que los cambios en el artículo no invalidarán la instantánea. 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 invalidar la instantánea y, si hay suscripciones existentes que requieran una nueva instantánea, concede permiso para marcar como obsoleta la instantánea existente y generar una nueva.

  • [@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 de tipo bit y su valor predeterminado es 0.

    El valor 0 especifica que los cambios en el artículo no obligarán a reinicializar la suscripción. Si el procedimiento almacenado detecta que el cambio obligaría a reinicializar suscripciones, se producirá un error y no se realizarán cambios. 1 especifica que los cambios realizados en el artículo darán lugar a que se reinicialicen las suscripciones existentes y concede permiso para que se lleve a cabo la reinicialización.

  • [ @publisher= ] 'publisher'
    Especifica un publicador que no es de Microsoft SQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.

    [!NOTA]

    publisher no debe utilizarse con un publicador de SQL Server.

  • [ @internal= ] 'internal'
    Exclusivamente para uso interno.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

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

Con sp_articlecolumn solamente se puede filtrar un artículo sin suscripciones.

Ejemplo

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 del rol fijo de base de datos db_owner pueden ejecutar sp_articlecolumn.

Vea también

Referencia

sp_addarticle (Transact-SQL)

sp_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

Procedimientos almacenados de replicación (Transact-SQL)

Conceptos

Definir un artículo

Definir y modificar un filtro de columna

Filtrar datos publicados