Usuwanie artykułu

Dotyczy:SQL ServerAzure SQL Managed Instance

Ten temat opisuje, jak usunąć artykuł w SQL Server za pomocą Transact-SQL lub Obiektów Zarządzania Replikacją (RMO). Aby uzyskać informacje o warunkach, na jakich można usunąć artykuły oraz czy usunięcie artykułu wymaga nowego snapshota, czy ponownego uruchomienia subskrypcji, zobacz Dodaj artykuły do i usuń artykuły z istniejących publikacji.

Korzystanie z Transact-SQL

Artykuły można usuwać programowo za pomocą procedur składowanych replikacji. Procedury przechowywane, których używasz, zależą od rodzaju publikacji, do której należy artykuł.

Aby usunąć artykuł z migawki lub publikacji transakcyjnej

  1. Wykonaj sp_droparticle (Transact-SQL), aby usunąć artykuł, określony przez @article, z publikacji określonej przez @publication. Określ wartość 1 dla @force_invalidate_snapshot.

  2. (Opcjonalnie) Aby całkowicie usunąć opublikowany obiekt z bazy danych, wykonaj DROP <objectname> polecenie w Publisher w bazie publikacji.

Aby usunąć artykuł z publikacji scalonej

  1. Wykonaj sp_dropmergearticle (Transact-SQL), aby usunąć artykuł, określony przez @article, z publikacji określonej przez @publication. W razie potrzeby określ wartość 1 dla @force_invalidate_snapshot oraz wartość 1 dla @force_reinit_subscription.

  2. (Opcjonalnie) Aby całkowicie usunąć opublikowany obiekt z bazy danych, wykonaj DROP <objectname> polecenie w Publisher w bazie publikacji.

Przykłady (Transact-SQL)

Poniższy przykład usuwa artykuł z publikacji transakcyjnej. Ponieważ ta zmiana unieważnia istniejącą migawkę, dla parametru @force_invalidate_snapshot należy określić wartość 1.

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  

Poniższy przykład usuwa dwa artykuły z publikacji scalanej. Ponieważ te zmiany unieważniają istniejącą migawkę, dla parametru @force_invalidate_snapshot określono wartość 1.

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  

Korzystanie z obiektów zarządzania replikacją (RMO)

Możesz usuwać artykuły programowo za pomocą Obiektów Zarządzania Replikacją (RMO). Klasy RMO, których używasz do usunięcia artykułu, zależą od rodzaju publikacji, do której artykuł należy.

Usuwanie artykułu należącego do publikacji migawkowej lub transakcyjnej

  1. Utwórz połączenie z programem Publisher przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy TransArticle.

  3. Ustaw właściwości Name, PublicationNamei DatabaseName.

  4. Ustaw połączenie z kroku 1 dla właściwości ConnectionContext.

  5. Sprawdź właściwość IsExistingObject, aby upewnić się, że artykuł istnieje. Jeśli wartość tej właściwości jest fałszywa, to albo właściwości artykułu w kroku 3 zostały zdefiniowane nieprawidłowo, albo artykuł nie istnieje.

  6. Wywołaj metodę Remove .

  7. Zamknij wszystkie połączenia.

Aby usunąć artykuł należący do publikacji scalonej

  1. Utwórz połączenie z programem Publisher przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy MergeArticle.

  3. Ustaw właściwości Name, PublicationNamei DatabaseName.

  4. Ustaw połączenie z kroku 1 dla właściwości ConnectionContext.

  5. Sprawdź właściwość IsExistingObject, aby sprawdzić, czy artykuł istnieje. Jeśli wartość tej właściwości jest fałszywa, to albo właściwości artykułu w kroku 3 zostały zdefiniowane nieprawidłowo, albo artykuł nie istnieje.

  6. Wywołaj metodę Remove .

  7. Zamknij wszystkie połączenia.