Bagikan melalui


Menghapus Artikel

Topik ini menjelaskan cara menghapus artikel di SQL Server 2014 dengan menggunakan Transact-SQL atau Replication Management Objects (RMO). Untuk informasi tentang kondisi di mana artikel dapat dihilangkan dan apakah menghapus artikel memerlukan rekam jepret baru atau reinisialisasi langganan, lihat Menambahkan Artikel ke dan Menghilangkan Artikel dari Publikasi yang Ada.

Menggunakan T-SQL

Artikel dapat dihapus secara terprogram menggunakan prosedur tersimpan replikasi. Prosedur tersimpan yang Anda gunakan bergantung pada jenis publikasi tempat artikel berada.

Untuk menghapus artikel dari rekam jepret atau publikasi transaksi

  1. Jalankan sp_droparticle (Transact-SQL) untuk menghapus artikel, yang ditentukan oleh @article, dari publikasi, yang ditentukan oleh @publication. Tentukan nilai 1 untuk @force_invalidate_snapshot.

  2. (Opsional) Untuk menghapus objek yang diterbitkan dari database sepenuhnya, jalankan DROP <objectname> perintah di Publisher pada database publikasi.

Untuk menghapus artikel dari publikasi gabungan

  1. Jalankan sp_dropmergearticle (Transact-SQL) untuk menghapus artikel, yang ditentukan oleh @article, dari publikasi, yang ditentukan oleh @publication. Jika perlu, tentukan nilai 1 untuk @force_invalidate_snapshot dan nilai 1 untuk @force_reinit_subscription.

  2. (Opsional) Untuk menghapus objek yang diterbitkan dari database sepenuhnya, jalankan DROP <objectname> perintah di Publisher pada database publikasi.

Contoh (Transact-SQL)

Contoh berikut menghapus artikel dari publikasi transaksi. Karena perubahan ini membatalkan rekam jepret yang ada, nilai 1 ditentukan untuk parameter @force_invalidate_snapshot .

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @article = N'Product'; 

-- Drop the transactional article.
USE [AdventureWorks2012]
EXEC sp_droparticle 
  @publication = @publication, 
  @article = @article,
  @force_invalidate_snapshot = 1;
GO

Contoh berikut menghapus dua artikel dari publikasi gabungan. Karena perubahan ini membatalkan rekam jepret yang ada, nilai 1 ditentukan untuk parameter @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
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;

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

-- Drops the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table3,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the Employee table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table1,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Menggunakan Objek Manajemen Replikasi (RMO)

Anda dapat menghapus artikel secara terprogram dengan menggunakan Objek Manajemen Replikasi (RMO). Kelas RMO yang Anda gunakan untuk menghapus artikel bergantung pada jenis publikasi tempat artikel berada.

Untuk menghapus artikel milik rekam jepret atau publikasi transaksi

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas TransArticle.

  3. Atur Nameproperti , PublicationName, dan DatabaseName .

  4. Atur koneksi dari langkah 1 untuk ConnectionContext properti .

  5. IsExistingObject Periksa properti untuk memverifikasi bahwa artikel tersebut ada. Jika nilai properti ini adalah false, properti artikel di langkah 3 didefinisikan dengan tidak benar atau artikel tidak ada.

  6. Panggil metode Remove.

  7. Tutup semua koneksi.

Untuk menghapus artikel yang termasuk dalam publikasi gabungan

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas MergeArticle.

  3. Atur Nameproperti , PublicationName, dan DatabaseName .

  4. Atur koneksi dari langkah 1 untuk ConnectionContext properti .

  5. IsExistingObject Periksa properti untuk memverifikasi bahwa artikel tersebut ada. Jika nilai properti ini adalah false, properti artikel di langkah 3 didefinisikan dengan tidak benar atau artikel tidak ada.

  6. Panggil metode Remove.

  7. Tutup semua koneksi.

Lihat juga

Menambahkan Artikel ke dan Menghapus Artikel dari Publikasi yang Ada
Konsep Prosedur Tersimpan Sistem Replikasi