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.
Sintaks
sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi. @publication adalah sysname, tanpa default.
[ @subscriber = ] N'pelanggan'
Nama Pelanggan. @subscriber adalah sysname, tanpa default.
[ @destination_db = ] N'destination_db'
Nama database tujuan. @destination_db adalah sysname, tanpa default.
[ @publisher = ] N'publisher'
Menentukan Penerbit Non-SQL Server. @publisher adalah sysname, dengan default NULL
.
@publisher 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, 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. Transaksi pertama memvalidasi artikel art1
, sementara transaksi kedua memvalidasi art2
. Panggilan ke sp_marksubscriptionvalidation
dan sp_article_validation dienkapsulasi dalam transaksi. Kami hanya merekomendasikan satu panggilan ke sp_article_validation per transaksi. Ini karena sp_article_validation menyimpan kunci tabel bersama pada tabel sumber selama transaksi. Anda harus menjaga transaksi tetap pendek untuk memaksimalkan konkurensi.
BEGIN TRANSACTION;
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 TRANSACTION;
BEGIN TRANSACTION;
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 TRANSACTION;