sp_dropmergearticle (Transact-SQL)
Se aplica a: SQL Server
Quita un artículo de una publicación de combinación. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_dropmergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @reserved = ] reserved ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @ignore_merge_metadata = ] ignore_merge_metadata ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación desde la que se va a quitar un artículo. @publication es sysname, sin ningún valor predeterminado.
[ @article = ] N'article'
Nombre del artículo que se va a quitar de la publicación especificada. @article es sysname, sin ningún valor predeterminado. Si all
es , se quitan todos los artículos existentes de la publicación de combinación especificada. Incluso si @article es all
, la publicación todavía debe quitarse por separado del artículo.
[ @ignore_distributor = ] ignore_distributor
Indica si este procedimiento almacenado se ejecuta sin conectarse al distribuidor. @ignore_distributor es bit, con un valor predeterminado de 0
.
[ @reserved = ] reserved
Reservado para uso futuro. @reserved es bit, con un valor predeterminado de 0
.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Habilita o deshabilita la capacidad de que se invalide una instantánea. @force_invalidate_snapshot es bit, con un valor predeterminado de 0
.
0
especifica que los cambios realizados en el artículo de combinación no hacen que la instantánea no sea válida.1
significa que los cambios realizados en el artículo de combinación pueden hacer que la instantánea no sea válida y, si es así, un valor de1
concede permiso para que se produzca la nueva instantánea.
[ @force_reinit_subscription = ] force_reinit_subscription
Confirma que para quitar el artículo deben reinicializarse las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0
.
0
especifica que quitar el artículo no hace que se reinicialice la suscripción.1
significa que quitar el artículo hace que se reinicialicen las suscripciones existentes y se concede permiso para que se produzca la reinicialización de la suscripción.
[ @ignore_merge_metadata = ] ignore_merge_metadata
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_dropmergearticle
se usa en la replicación de mezcla. Para obtener más información sobre cómo quitar artículos, vea Agregar artículos a y quitar artículos de publicaciones existentes.
sp_dropmergearticle
La ejecución de para quitar un artículo de una publicación no quita el objeto de la base de datos de publicación ni el objeto correspondiente de la base de datos de suscripciones. Si es necesario, utilice DROP <object>
para quitar estos objetos manualmente.
Permisos
Solo los miembros del rol fijo de servidor sysadmin o el rol fijo de base de datos db_owner pueden ejecutar sp_dropmergearticle
.
Ejemplos
Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022
o AdventureWorksDW2022
, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.
A Quitar artículos de una publicación de combinación
USE [AdventureWorks2022];
GO
DECLARE @publication AS SYSNAME;
DECLARE @article1 AS SYSNAME;
DECLARE @article2 AS SYSNAME;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail';
SET @article2 = N'SalesOrderHeader';
EXEC sp_dropmergearticle @publication = @publication,
@article = @article1,
@force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle @publication = @publication,
@article = @article2,
@force_invalidate_snapshot = 1;
GO
B. Quitar filtros de combinación de mezcla y artículos relacionados
USE [AdventureWorks2022];
GO
DECLARE @publication AS SYSNAME;
DECLARE @table1 AS SYSNAME;
DECLARE @table2 AS SYSNAME;
DECLARE @table3 AS SYSNAME;
DECLARE @salesschema AS SYSNAME;
DECLARE @hrschema AS SYSNAME;
DECLARE @filterclause AS NVARCHAR(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter @publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter @publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table3,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drop the article for the Employee table.
EXEC sp_dropmergearticle @publication = @publication,
@article = @table1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO