sp_dropmergearticle (T-SQL)

Berlaku untuk:SQL Server

Menghapus artikel dari publikasi gabungan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

Sintaks

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 ]
[ ; ]

Argumen

[ @publication = ] N'publikasi'

Nama publikasi untuk menjatuhkan artikel. @publication adalah sysname, tanpa default.

[ @article = ] N'article'

Nama artikel untuk dihilangkan dari publikasi yang diberikan. @article adalah sysname, tanpa default. Jika all, semua artikel yang ada dalam publikasi penggabungan yang ditentukan akan dihapus. Bahkan jika @article adalah all, publikasi masih harus dihilangkan secara terpisah dari artikel.

[ @ignore_distributor = ] ignore_distributor

Menunjukkan apakah prosedur tersimpan ini dijalankan tanpa menyambungkan ke Distributor. @ignore_distributor adalah bit, dengan default 0.

[ @reserved = ] dicadangkan

Disiapkan untuk penggunaan masa mendatang. @reserved adalah bit, dengan default 0.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Mengaktifkan atau menonaktifkan kemampuan untuk membatalkan rekam jepret. @force_invalidate_snapshot adalah bit, dengan default 0.

  • 0 menentukan bahwa perubahan pada artikel penggabungan tidak menyebabkan rekam jepret tidak valid.

  • 1 berarti bahwa perubahan pada artikel penggabungan dapat menyebabkan rekam jepret tidak valid, dan jika demikian, nilai 1 memberikan izin untuk rekam jepret baru terjadi.

[ @force_reinit_subscription = ] force_reinit_subscription

Mengakui bahwa menghapus artikel mengharuskan langganan yang ada untuk diinisialisasi ulang. @force_reinit_subscription adalah bit, dengan default 0.

  • 0 menentukan bahwa menghapus artikel tidak menyebabkan langganan diinisialisasi ulang.

  • 1 berarti bahwa menjatuhkan artikel menyebabkan langganan yang ada diinisialisasi ulang, dan memberikan izin untuk reinitialisasi langganan terjadi.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_dropmergearticle digunakan dalam replikasi penggabungan. Untuk informasi selengkapnya tentang menjatuhkan artikel, lihat Menambahkan Artikel ke dan Menghapus Artikel dari Publikasi yang Sudah Ada.

Menjalankan sp_dropmergearticle untuk menghilangkan artikel dari publikasi tidak menghapus objek dari database publikasi atau objek terkait dari database langganan. Gunakan DROP <object> untuk menghapus objek ini secara manual jika perlu.

Izin

Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_dropmergearticle.

Contoh

Artikel ini memerlukan AdventureWorks2022 database sampel, yang dapat Anda unduh dari beranda Sampel Microsoft SQL Server dan Proyek Komunitas.

J. Menghapus artikel dari publikasi gabungan

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