Partage via


sp_dropmergearticle (Transact-SQL)

S’applique à :SQL Server

Supprime un article d'une publication de fusion. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Conventions de la syntaxe Transact-SQL

Syntaxe

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 ]
[ ; ]

Arguments

[ @publication = ] N’publication'

Nom de la composition à partir de laquelle supprimer un article. @publication est sysname, sans valeur par défaut.

[ @article = ] N’article'

Nom de l’article à supprimer de la composition donnée. @article est sysname, sans valeur par défaut. Si all, tous les articles existants de la composition de fusion spécifiée sont supprimés. Même si @article est all, la publication doit toujours être supprimée séparément de l’article.

[ @ignore_distributor = ] ignore_distributor

Indique si cette procédure stockée est exécutée sans se connecter au serveur de distribution. @ignore_distributor est bit, avec la valeur par défaut 0.

[ @reserved = ] réservé

Réservé pour un usage futur. @reserved est bit, avec la valeur par défaut 0.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Active ou désactive la possibilité d'invalider un instantané. @force_invalidate_snapshot est bit, avec la valeur par défaut 0.

  • 0 spécifie que les modifications apportées à l’article de fusion n’entraînent pas l’invalidation de l’instantané.

  • 1 signifie que les modifications apportées à l’article de fusion peuvent entraîner l’échec de l’instantané et, si c’est le cas, une valeur d’autorisation de 1 création de la nouvelle capture instantanée se produit.

[ @force_reinit_subscription = ] force_reinit_subscription

Confirme que la suppression de l'article nécessite la réinitialisation des abonnements existants. @force_reinit_subscription est bit, avec la valeur par défaut 0.

  • 0 spécifie que la suppression de l’article n’entraîne pas la réinitialisation de l’abonnement.

  • 1 signifie que la suppression de l’article entraîne la réinitialisation des abonnements existants et autorise la réinitialisation de l’abonnement.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_dropmergearticle est utilisé dans la réplication de fusion. Pour plus d’informations sur la suppression d’articles, consultez Ajouter des articles à des publications existantes et supprimer des articles.

L’exécution sp_dropmergearticle pour supprimer un article d’une publication ne supprime pas l’objet de la base de données de publication ou l’objet correspondant de la base de données d’abonnement. Utilisez DROP <object> pour supprimer manuellement ces objets le cas échéant.

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou le rôle de base de données fixe db_owner peuvent s’exécuter sp_dropmergearticle.

Exemples

Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022 ou AdventureWorksDW2022 fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.

A. Supprimer des articles d’une publication de fusion

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