sp_articleview (Transact-SQL)
Crea la vista que define el artículo publicado cuando una tabla se filtra horizontal o verticalmente. Esta vista se utiliza como el origen filtrado del esquema y los datos de las tablas de destino. Con este procedimiento almacenado sólo pueden modificarse artículos sin suscripciones. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.
Sintaxis
sp_articleview [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @view_name = ] 'view_name']
[ , [ @filter_clause = ] 'filter_clause']
[ , [ @change_active = ] change_active ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @refreshsynctranprocs = ] refreshsynctranprocs ]
[ , [ @internal = ] internal ]
Argumentos
[ @publication=] 'publication'
Es el nombre de la publicación que contiene el 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.[ @view_name=] 'view_name'
Es el nombre de la vista que define el artículo publicado. view_name es de tipo nvarchar(386) y su valor predeterminado es NULL.[ @filter_clause=] 'filter_clause'
Es una cláusula de restricción (WHERE) que define un filtro horizontal. Cuando escriba la cláusula de restricción, omita la palabra clave WHERE. filter_clause es de tipo ntext y su valor predeterminado es NULL.[ @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 es 0, las columnas no se modifican. Si es 1, se pueden crear o volver a crear vistas en los artículos activos que cuentan con 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 reinicializarán 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 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 MicrosoftSQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.[!NOTA]
publisher no se puede utilizar al publicar desde un publicador de SQL Server.
[ @refreshsynctranprocs = ] refreshsynctranprocs
Indica si los procedimientos almacenados utilizados para sincronizar la replicación se vuelven a crear automáticamente. refreshsynctranprocs es de tipo bit y su valor predeterminado es 1.1 significa que los procedimientos almacenados se vuelven a crear.
0 significa que los procedimientos almacenados no se vuelven a crear.
[ @internal= ] internal
Solo 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 (error)
Notas
sp_articleview crea la vista que define el artículo publicado e inserta el Id. de esta vista en la columna sync_objid de la tabla sysarticles (Transact-SQL), además de insertar el texto de la cláusula de restricción en la columna filter_clause.Si todas las columnas están replicadas y no hay columna filter_clause, la columna sync_objid de la tabla sysarticles (Transact-SQL) se establece en el Id. de la tabla base y no es necesario utilizar sp_articleview.
Para publicar una tabla filtrada verticalmente (es decir, para filtrar columnas), ejecute primero sp_addarticle sin el parámetro sync_object, ejecute sp_articlecolumn (Transact-SQL) una vez por cada columna que se vaya a replicar (definiendo el filtro vertical) y, a continuación, ejecute sp_articleview para crear la vista que define el artículo publicado.
Para publicar una tabla filtrada horizontalmente (es decir, para filtrar filas), ejecute sp_addarticle (Transact-SQL) sin el parámetro filter. Ejecute sp_articlefilter (Transact-SQL) con todos los parámetros, incluido filter_clause. A continuación, ejecute sp_articleview con todos los parámetros, incluido el parámetro idéntico filter_clause.
Para publicar una tabla filtrada vertical y horizontalmente, ejecute sp_addarticle (Transact-SQL) sin los parámetros sync_object ni filter. Ejecute sp_articlecolumn (Transact-SQL) una vez por cada columna que se vaya a replicar y, a continuación, ejecute sp_articlefilter (Transact-SQL) y sp_articleview.
Si el artículo ya contiene una vista que define el artículo publicado, sp_articleview quita la vista existente y crea una nueva automáticamente. Si la vista se ha creado manualmente (la columna type de sysarticles (Transact-SQL) es 5), no se quita la vista existente.
Si crea de forma manual un procedimiento almacenado de filtro personalizado y una vista que define el artículo publicado, no ejecute sp_articleview. En su lugar, proporciónelos como parámetros filter y sync_object para sp_addarticle (Transact-SQL), junto con el valor apropiado de type.
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
Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner pueden ejecutar sp_articleview.
Vea también