sp_reinitsubscription (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menandai langganan untuk reinisialisasi. Prosedur tersimpan ini dijalankan di Publisher untuk langganan push.

Konvensi sintaks transact-SQL

Sintaks

  
sp_reinitsubscription [ [ @publication = ] 'publication' ]  
    [ , [ @article = ] 'article' ]  
        , [ @subscriber = ] 'subscriber'  
    [ , [ @destination_db = ] 'destination_db']  
    [ , [ @for_schema_change = ] 'for_schema_change']  
    [ , [ @publisher = ] 'publisher' ]  
    [ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]   
    [ , [ @invalidate_snapshot = ] invalidate_snapshot ]  

Argumen

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

[ @article = ] 'article' Adalah nama artikel. artikel adalah sysname, dengan default semua. Untuk publikasi yang segera diperbarui, artikel harus semuanya; jika tidak, prosedur tersimpan melewati publikasi dan melaporkan kesalahan.

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

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

[ @for_schema_change = ] 'for_schema_change' Menunjukkan apakah reinitialisasi terjadi sebagai akibat dari perubahan skema di database publikasi. for_schema_change adalah bit, dengan default 0. Jika 0, langganan aktif untuk publikasi yang memungkinkan pembaruan segera diaktifkan kembali selama seluruh publikasi, dan bukan hanya beberapa artikelnya, diinisialisasi ulang. Ini berarti bahwa reinitialisasi sedang dimulai sebagai akibat dari perubahan skema. Jika 1, langganan aktif tidak diaktifkan kembali hingga Agen Rekam Jepret berjalan.

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

Catatan

publisher tidak boleh digunakan untuk Penerbit SQL Server.

[ @ignore_distributor_failure = ] ignore_distributor_failure Memungkinkan reinisialisasi meskipun Distributor tidak ada atau offline. ignore_distributor_failure adalah bit, dengan default 0. Jika 0, reinitialisasi gagal jika Distributor tidak ada atau offline.

[ @invalidate_snapshot = ] invalidate_snapshot Membatalkan rekam jepret publikasi yang ada. invalidate_snapshot adalah bit, dengan default 0. Jika 1, rekam jepret baru dibuat untuk publikasi.

Mengembalikan Nilai Kode

0 (berhasil) atau 1 (kegagalan)

Keterangan

sp_reinitsubscription digunakan dalam replikasi transaksional.

sp_reinitsubscription tidak didukung untuk replikasi transaksional peer-to-peer.

Untuk langganan di mana rekam jepret awal diterapkan secara otomatis dan di mana publikasi tidak mengizinkan langganan yang dapat diperbarui, Agen Rekam Jepret harus dijalankan setelah prosedur tersimpan ini dijalankan sehingga skema dan file program salin massal disiapkan dan Agen Distribusi kemudian dapat menyinkronkan ulang langganan.

Untuk langganan di mana rekam jepret awal diterapkan secara otomatis dan publikasi memungkinkan langganan yang dapat diperbarui, Agen Distribusi menyinkronkan ulang langganan menggunakan skema terbaru dan file program salin massal yang sebelumnya dibuat oleh Agen Rekam Jepret. Agen Distribusi menyinkronkan ulang langganan segera setelah pengguna menjalankan sp_reinitsubscription, jika Agen Distribusi tidak sibuk; jika tidak, sinkronisasi dapat terjadi setelah interval pesan (ditentukan oleh parameter perintah Agen Distribusi: MessageInterval).

sp_reinitsubscription tidak berpengaruh pada langganan tempat rekam jepret awal diterapkan secara manual.

Untuk menyinkronkan ulang langganan anonim ke publikasi, teruskan semua atau NULL sebagai pelanggan.

Replikasi transaksional mendukung reinisialisasi langganan di tingkat artikel. Rekam jepret artikel diterapkan kembali di Pelanggan selama sinkronisasi berikutnya setelah artikel ditandai untuk reinisialisasi. Namun, jika ada artikel dependen yang juga berlangganan oleh Pelanggan yang sama, menerapkan kembali rekam jepret pada artikel mungkin gagal kecuali artikel dependen dalam publikasi juga secara otomatis diinisialisasi ulang dalam keadaan tertentu:

  • Jika perintah pra-pembuatan pada artikel adalah 'drop', artikel untuk tampilan terikat skema dan prosedur tersimpan terikat skema pada objek dasar artikel tersebut juga ditandai untuk reinisialisasi.

  • Jika opsi skema pada artikel menyertakan pembuatan skrip integritas referensial yang dinyatakan pada kunci primer, artikel yang memiliki tabel dasar dengan hubungan kunci asing ke tabel dasar dari artikel yang diinisialisasi ulang juga ditandai untuk reinitialisasi.

Contoh

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorks2022Replica';
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks2022Replica]

-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription 
    @subscriber = $(SubServer),
    @destination_db = @subscriptionDB,
    @publication = @publication;
GO

-- Start the Distribution Agent.

Izin

Hanya anggota peran server tetap sysadmin , anggota peran database tetap db_owner , atau pembuat langganan yang dapat menjalankan sp_reinitsubscription.

Lihat Juga

Menginisialisasi ulang Langganan
Menginisialisasi ulang Langganan
Prosedur Tersimpan Replikasi (Transact-SQL)