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

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

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

  • 1signifie que les modifications apportées à l’article de fusion peuvent entraîner l’instantané non valide et, si c’est le cas, une valeur de 1 donner l’autorisation pour la nouvelle instantané 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

Cet article requiert l'exemple de bases de données AdventureWorks2022, que vous pouvez télécharger à partir de la page d'accueil des exemples et projets de communautés 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