Bagikan melalui


sp_marksubscriptionvalidation (T-SQL)

Berlaku untuk: SQL Server

Menandai transaksi terbuka saat ini menjadi transaksi validasi tingkat langganan untuk pelanggan yang ditentukan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

Sintaks

  
sp_marksubscriptionvalidation [ @publication = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

Argumen

[ @publication = ] 'publication' Adalah nama publikasi. publikasi adalah sysname, tanpa default.

[ @subscriber = ] 'subscriber' Adalah nama Pelanggan. pelanggan adalah sysname, tanpa default.

[ @destination_db = ] 'destination_db' Adalah nama database tujuan. destination_db adalah sysname, tanpa default.

[ @publisher = ] 'publisher' Menentukan Penerbit SQL Server non-Microsoft. publisher adalah sysname, dengan default NULL.

Catatan

penerbit tidak boleh digunakan untuk publikasi milik Penerbit SQL Server.

Mengembalikan Nilai Kode

0 (berhasil) atau 1 (kegagalan)

Keterangan

sp_marksubscriptionvalidation digunakan dalam replikasi transaksional.

sp_marksubscriptionvalidation tidak mendukung pelanggan non-SQL Server.

Untuk Penerbit non-SQL Server, Anda tidak dapat menjalankan sp_marksubscriptionvalidation dari dalam transaksi eksplisit. Ini karena transaksi eksplisit tidak didukung melalui koneksi server tertaut yang digunakan untuk mengakses Publisher.

sp_marksubscriptionvalidation harus digunakan bersama dengan sp_article_validation (Transact-SQL), menentukan nilai 1 untuk subscription_level, dan dapat digunakan dengan panggilan lain untuk sp_marksubscriptionvalidation menandai transaksi terbuka saat ini untuk pelanggan lain.

Izin

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

Contoh

Kueri berikut ini dapat diterapkan ke database penerbitan untuk memposting perintah validasi tingkat langganan. Perintah ini diambil oleh Agen Distribusi dari Pelanggan tertentu. Perhatikan bahwa transaksi pertama memvalidasi artikel 'art1', sementara transaksi kedua memvalidasi 'art2'. Perhatikan juga bahwa panggilan ke sp_marksubscriptionvalidation dan sp_article_validation (Transact-SQL) telah dienkapsulasi dalam transaksi. Kami hanya merekomendasikan satu panggilan ke sp_article_validation (Transact-SQL) per transaksi. Ini karena sp_article_validation (Transact-SQL) memegang kunci tabel bersama pada tabel sumber selama durasi transaksi. Anda harus menjaga transaksi tetap pendek untuk memaksimalkan konkurensi.

begin tran  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub', @destination_db = 'SubDB'  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub2', @destination_db = 'SubDB'  
  
exec sp_article_validation @publication = 'pub1', @article = 'art1',  
 @rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,  
 @subscription_level = 1  
  
commit tran  
  
begin tran  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub', @destination_db = 'SubDB'  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub2', @destination_db = 'SubDB'  
  
exec sp_article_validation @publication = 'pub1', @article = 'art2',  
 @rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,  
 @subscription_level = 1  
  
commit tran  

Lihat Juga

Prosedur Tersimpan Sistem (Transact-SQL)
Memvalidasi Data yang Direplikasi