Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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;
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXECUTE sp_article_validation
@publication = 'pub1',
@article = 'art1',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;
BEGIN TRANSACTION;
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXECUTE sp_article_validation
@publication = 'pub1',
@article = 'art2',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;