Supprimer un article

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Managed Instance

Cette rubrique explique comment supprimer un article dans SQL Server en utilisant Transact-SQL ou Replication Management Objects (RMO). Pour plus d’informations sur les conditions dans lesquelles un article peut être supprimé et pour savoir si la suppression d’un article requiert un nouvel instantané ou la réinitialisation des abonnements, consultez Ajouter et supprimer des articles de publications existantes.

Dans cette rubrique

Utilisation de Transact-SQL

Les articles peuvent être supprimés par programme en utilisant des procédures stockées de réplication. Les procédures stockées utilisées dépendent du type de publication auquel l'article appartient.

Pour supprimer un article d'une publication transactionnelle ou d'instantané

  1. Exécutez sp_droparticle (Transact-SQL) pour supprimer un article, spécifié par @article, d’une publication, spécifiée par @publication. Spécifiez la valeur 1 pour @force_invalidate_snapshot.

  2. (Facultatif) Pour supprimer entièrement l'objet publié de la base de données, exécutez la commande DROP <objectname> au niveau du serveur de publication dans la base de données de publication.

Pour supprimer un article d'une publication de fusion

  1. Exécutez sp_dropmergearticle (Transact-SQL) pour supprimer un article, spécifié par @article, d’une publication, spécifiée par @publication. Si nécessaire, spécifiez une valeur de 1 pour @force_invalidate_snapshot et une valeur de 1 pour @force_reinit_subscription.

  2. (Facultatif) Pour supprimer entièrement l'objet publié de la base de données, exécutez la commande DROP <objectname> au niveau du serveur de publication dans la base de données de publication.

Exemples (Transact-SQL)

L'exemple suivant supprime un article d'une publication transactionnelle. Étant donné que cette modification invalide l’instantané existant, une valeur de 1 est spécifiée pour le paramètre @force_invalidate_snapshot .

DECLARE @publication AS sysname;  
DECLARE @article AS sysname;  
SET @publication = N'AdvWorksProductTran';   
SET @article = N'Product';   
  
-- Drop the transactional article.  
USE [AdventureWorks]  
EXEC sp_droparticle   
  @publication = @publication,   
  @article = @article,  
  @force_invalidate_snapshot = 1;  
GO  

L'exemple suivant supprime deux articles d'une publication de fusion. Étant donné que ces modifications ne valident pas l’instantané existant, une valeur de 1 est spécifiée pour le paramètre @force_invalidate_snapshot .

DECLARE @publication AS sysname;  
DECLARE @article1 AS sysname;  
DECLARE @article2 AS sysname;  
SET @publication = N'AdvWorksSalesOrdersMerge';  
SET @article1 = N'SalesOrderDetail';   
SET @article2 = N'SalesOrderHeader';   
  
-- Remove articles from a merge publication.  
USE [AdventureWorks]  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article1,  
  @force_invalidate_snapshot = 1;  
EXEC sp_dropmergearticle   
  @publication = @publication,   
  @article = @article2,  
  @force_invalidate_snapshot = 1;  
GO  

Utilisation d'objets RMO (Replication Management Objects)

Vous pouvez supprimer des articles par programme à l'aide des objets RMO (Replication Management Objects). Les classes RMO à utiliser pour supprimer un article dépendent du type de publication auquel l'article appartient.

Pour supprimer un article qui appartient à une publication transactionnelle ou d'instantané.

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe TransArticle.

  3. Définissez les propriétés Name, PublicationNameet DatabaseName .

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .

  5. Vérifiez la propriété IsExistingObject pour vérifier que l'article existe. Si la valeur de cette propriété est false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. Appelez la méthode Remove .

  7. Fermez toutes les connexions.

Pour supprimer un article qui appartient à une publication de fusion

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe MergeArticle.

  3. Définissez les propriétés Name, PublicationNameet DatabaseName .

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .

  5. Vérifiez la propriété IsExistingObject pour vérifier que l'article existe. Si la valeur de cette propriété est false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. Appelez la méthode Remove .

  7. Fermez toutes les connexions.

Voir aussi

Ajouter et supprimer des articles de publications existantes
Replication System Stored Procedures Concepts