Supprimer un article

S’applique à : SQL Server Azure SQL Managed Instance

Cette rubrique explique comment supprimer un article dans SQL Server à l’aide de Transact-SQL ou des objets RMO (Replication Management Objects). 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. Affectez la valeur 1 à @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, affectez la valeur 1 à @force_invalidate_snapshot et la valeur 1 à @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. Dans la mesure où cette modification invalide l'instantané existant, la valeur 1 est affectée au 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. Dans la mesure où ces modifications invalident l'instantané existant, la valeur 1 est affectée au paramètre @force_invalidate_snapshot spécifié.

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.