Mengonfigurasi Properti Cuplikan (Pemrograman Transact-SQL Replikasi)

Berlaku untuk: SQL ServerAzure SQL Managed Instance

Properti rekam jepret dapat ditentukan dan dimodifikasi secara terprogram menggunakan prosedur tersimpan replikasi, di mana prosedur tersimpan yang digunakan bergantung pada jenis publikasi.

Untuk mengonfigurasi properti rekam jepret saat membuat rekam jepret atau publikasi transaksional

  1. Di Publisher, jalankan sp_addpublication. Tentukan nama publikasi untuk @publication, nilai snapshot atau continuous untuk @repl_freq, dan satu atau lebih parameter terkait snapshot berikut:

    • @alt_snapshot_folder - tentukan jalur jika rekam jepret untuk publikasi ini diakses dari lokasi tersebut alih-alih atau selain folder default rekam jepret.
    • @compress_snapshot - tentukan nilai true jika file rekam jepret di folder rekam jepret alternatif dikompresi dalam format file Microsoft CAB.
    • @pre_snapshot_script - tentukan nama file dan jalur lengkap dari file .sql yang akan dijalankan pada Subscriber selama inisialisasi sebelum snapshot awal diterapkan.
    • @post_snapshot_script - tentukan nama file dan jalur lengkap file .sql yang akan dijalankan pada Subscriber saat inisialisasi setelah snapshot awal diterapkan.
    • @snapshot_in_defaultfolder - tentukan nilai false jika rekam jepret hanya tersedia di lokasi non-default.

    Untuk informasi selengkapnya tentang membuat publikasi, lihat Membuat Publikasi.

Untuk mengonfigurasi properti rekam jepret saat membuat publikasi gabungan

  1. Di Publisher, jalankan sp_addmergepublication. Tentukan nama publikasi untuk @publication, nilai snapshot atau continuous untuk @repl_freq, dan satu atau lebih parameter terkait snapshot berikut:

    • alt_snapshot_folder - tentukan jalur jika rekam jepret untuk publikasi ini diakses dari lokasi tersebut alih-alih atau selain folder default rekam jepret.
    • @compress_snapshot - tentukan nilai true jika file rekam jepret di folder rekam jepret alternatif dikompresi dalam format file CAB.
    • @pre_snapshot_script - tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan pada Subscriber selama inisialisasi sebelum snapshot awal diterapkan.
    • @post_snapshot_script - tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan pada Subscriber saat inisialisasi setelah snapshot awal diterapkan.
    • @snapshot_in_defaultfolder - tentukan nilai false jika rekam jepret hanya tersedia di lokasi non-default.
  2. Untuk informasi selengkapnya tentang membuat publikasi, lihat Membuat Publikasi.

Untuk memodifikasi properti rekam jepret dari rekam jepret atau publikasi transaksi yang ada

  1. Di Publisher pada database publikasi, jalankan sp_changepublication. Tentukan nilai 1 untuk @force_invalidate_snapshot dan salah satu nilai berikut untuk @property:

    • alt_snapshot_folder -juga tentukan jalur baru ke folder rekam jepret alternatif untuk @value.
    • compress_snapshot - tentukan juga nilai true atau false untuk @value menunjukkan apakah file rekam jepret di folder rekam jepret alternatif dikompresi dalam format file CAB.
    • pre_snapshot_script - juga untuk @value tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan pada Subscriber selama inisialisasi sebelum snapshot awal diaplikasikan.
    • post_snapshot_script - juga untuk @value tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan di Subscriber selama inisialisasi setelah snapshot awal diterapkan.
    • snapshot_in_defaultfolder - tentukan juga nilai benar atau salah untuk menunjukkan apakah rekam jepret hanya tersedia di lokasi non-default.
  2. (Opsional) Di Publisher pada database publikasi, jalankan sp_changepublication_snapshot. Tentukan @publication dan satu atau lebih parameter penjadwalan atau kredensial keamanan yang sedang diubah.

    Penting

    Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial dalam file skrip, Anda harus mengamankan file untuk mencegah akses yang tidak sah.

  3. Jalankan Agen Snapshot Replikasi dari prompt perintah atau jalankan pekerjaan Agen Snapshot untuk menghasilkan cuplikan baru. Untuk informasi selengkapnya, lihat Membuat dan Menerapkan Rekam Jepret Awal.

Untuk memodifikasi properti rekam jepret dari publikasi gabungan yang sudah ada

  1. Di Publisher pada database publikasi, jalankan sp_changemergepublication. Tentukan nilai 1 untuk @force_invalidate_snapshot dan salah satu nilai berikut untuk @property**:

    • alt_snapshot_folder -juga tentukan jalur baru ke folder rekam jepret alternatif untuk @value.
    • compress_snapshot - tentukan juga nilai true atau false untuk @value menunjukkan apakah file rekam jepret di folder rekam jepret alternatif dikompresi dalam format file CAB.
    • pre_snapshot_script - juga untuk @value tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan pada Subscriber selama inisialisasi sebelum snapshot awal diterapkan.
    • post_snapshot_script - juga untuk @value tentukan nama file dan jalur lengkap ke file .sql yang akan dijalankan pada Subscriber selama inisialisasi setelah snapshot awal diterapkan.
    • snapshot_in_defaultfolder - tentukan juga nilai benar atau salah untuk menunjukkan apakah rekam jepret hanya tersedia di lokasi non-default.
  2. Jalankan Agen Snapshot Replikasi dari prompt perintah atau mulai tugas Agen Snapshot untuk membuat snapshot baru. Untuk informasi selengkapnya, lihat Membuat dan Menerapkan Rekam Jepret Awal.

Contoh

Contoh ini membuat publikasi yang menggunakan folder rekam jepret alternatif dan rekam jepret terkompresi.

-- 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".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
DECLARE @snapshot_share AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksSalesOrdersMergeAltSnapshot'; 
SET @article = N'SpecialOffer';
SET @owner = N'Sales';
SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder';

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname=N'merge publish',
    @value = N'true';

-- Create new merge publication with an alternate snapshot location. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- required parameters
    @publication = @publication, 
    @snapshot_in_defaultfolder = N'false',
    @alt_snapshot_folder = @snapshot_share,
    @compress_snapshot = N'true';

-- Create the snapshot job for the publication.
EXEC sp_addpublication_snapshot 
    @publication = @publication,
    @job_login = $(Login),
    @job_password = $(Password);

-- Add an article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner;

-- Start the snapshot job.
EXEC sp_startpublication_snapshot
    @publication = @publication;
GO