Bagikan melalui


Mengaktifkan Pembaruan Langganan untuk Publikasi Transaksional

Berlaku untuk: SQL Server

Topik ini menjelaskan cara mengaktifkan pembaruan langganan untuk publikasi transaksional di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Catatan

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Sebelum Anda mulai

Keamanan

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.

Menggunakan SQL Server Management Studio

Aktifkan pembaruan langganan untuk publikasi transaksional di halaman Jenis Publikasi wizard Publikasi Baru.

Untuk menggunakan pembaruan langganan, Anda juga harus mengonfigurasi opsi di Wizard Langganan Baru.

Untuk mengaktifkan pembaruan langganan

  1. Pada halaman Jenis Publikasi wizard Publikasi Baru, pilih Publikasi transaksional dengan langganan yang dapat diperbarui.

  2. Pada halaman Keamanan Agen, tentukan pengaturan keamanan untuk Agen Pembaca Antrean selain Agen Snapshot dan Agen Pembaca Log. Untuk informasi selengkapnya tentang izin yang diperlukan untuk akun tempat Agen Pembaca Antrean berjalan, lihat Model Keamanan Agen Replikasi.

    Catatan

    Agen Pembaca Antrean dikonfigurasi meskipun Anda hanya menggunakan pembaruan langganan segera.

Menggunakan T-SQL

Saat membuat publikasi transaksional secara terprogram menggunakan prosedur tersimpan replikasi, Anda dapat mengaktifkan pembaruan langganan segera atau antrean.

Untuk membuat publikasi yang mendukung pembaruan langganan segera

  1. Jika perlu, buat pekerjaan Agen Pembaca Log untuk database publikasi.

    • Jika pekerjaan Agen Pembaca Log sudah ada untuk database publikasi, lanjutkan ke langkah 2.

    • Jika Anda tidak yakin apakah pekerjaan Agen Pembaca Log ada untuk database yang diterbitkan, jalankan sp_helplogreader_agent (Transact-SQL) di Penerbit pada database publikasi. Jika tataan hasil kosong, pekerjaan Agen Pembaca Log harus dibuat.

    • Di penerbit, jalankan sp_addlogreader_agent (Transact-SQL). Tentukan kredensial Microsoft Windows tempat agen berjalan untuk @job_name dan @password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Penerbit, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi masuk Microsoft SQL Server untuk @publisher_login dan @publisher_password.

  2. Jalankan sp_addpublication (Transact-SQL), menentukan nilai true untuk parameter @allow_sync_tran.

  3. Di Publisher, jalankan sp_addpublication_snapshot (Transact-SQL). Tentukan nama publikasi yang digunakan di langkah 2 untuk @publication dan kredensial Windows tempat Agen Rekam Jepret berjalan untuk @job_name dan @password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Publisher, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi masuk SQL Server untuk @publisher_login dan @publisher_password. Ini membuat pekerjaan Agen Rekam Jepret untuk publikasi.

  4. Tambahkan artikel ke publikasi. Untuk informasi selengkapnya, lihat Menentukan Artikel.

  5. Di Pelanggan, buat langganan pembaruan untuk publikasi ini.

Untuk membuat publikasi yang mendukung pembaruan langganan antrean

  1. Jika perlu, buat pekerjaan Agen Pembaca Log untuk database publikasi.

    • Jika pekerjaan Agen Pembaca Log sudah ada untuk database publikasi, lanjutkan ke langkah 2.

    • Jika Anda tidak yakin apakah pekerjaan Agen Pembaca Log ada untuk database yang diterbitkan, jalankan sp_helplogreader_agent (Transact-SQL) di Penerbit pada database publikasi. Jika tataan hasil kosong, maka pekerjaan Agen Pembaca Log harus dibuat.

    • Di penerbit, jalankan sp_addlogreader_agent (Transact-SQL). Tentukan kredensial Windows tempat agen berjalan untuk @job_name dan @password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Publisher, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi masuk SQL Server untuk @publisher_login dan @publisher_password.

  2. Jika perlu, buat pekerjaan Agen Pembaca Antrean untuk Distributor.

    • Jika pekerjaan Agen Pembaca Antrean sudah ada untuk database distribusi, lanjutkan ke langkah 3.

    • Jika Anda tidak yakin apakah pekerjaan Agen Pembaca Antrean ada untuk database distribusi, jalankan sp_helpqreader_agent (Transact-SQL) di Distributor pada database distribusi. Jika tataan hasil kosong, maka pekerjaan Agen Pembaca Antrean harus dibuat.

    • Di Distributor, jalankan sp_addqreader_agent (Transact-SQL). Tentukan kredensial Windows tempat agen berjalan untuk @job_name dan @password. Kredensial ini digunakan saat Agen Pembaca Antrean tersambung ke Penerbit dan Pelanggan. Untuk informasi selengkapnya, lihat Model Keamanan Agen Replikasi.

  3. Jalankan sp_addpublication (Transact-SQL), menentukan nilai true untuk parameter @allow_queued_tran dan nilai kemenangan pub, sub reinit, atau sub win untuk @conflict_policy.

  4. Di Publisher, jalankan sp_addpublication_snapshot (Transact-SQL). Tentukan nama publikasi yang digunakan di langkah 3 untuk @publication dan kredensial Windows tempat Agen Rekam Jepret berjalan untuk @snapshot_job_name dan @password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Publisher, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi masuk SQL Server untuk @publisher_login dan @publisher_password. Ini membuat pekerjaan Agen Rekam Jepret untuk publikasi.

  5. Tambahkan artikel ke publikasi. Untuk informasi selengkapnya, lihat Menentukan Artikel.

  6. Di Pelanggan, buat langganan pembaruan untuk publikasi ini.

Untuk mengubah kebijakan konflik untuk publikasi yang memungkinkan pembaruan langganan antrean

  1. Di Publisher pada database publikasi, jalankan sp_changepublication (Transact-SQL). Tentukan nilai conflict_policy untuk @property dan mode kebijakan konflik yang diinginkan dari pub menang, sub reinit, atau sub win untuk @value.

Contoh (Transact-SQL)

Contoh ini membuat publikasi yang mendukung pembaruan langganan pull segera dan antrean.

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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 transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksProductTran'; 
SET @login = $(Login); 
SET @password = $(Password); 

USE [AdventureWorks2022]
-- Enable transactional replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a transactional publication that supports immediate updating, 
-- queued updating, and pull subscriptions. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
  -- Explicitly declare the related default properties 
    @conflict_policy = N'pub wins';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product'; 
SET @owner = N'Production'; 

-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2022]
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_table = @article, 
    @vertical_partition = N'false', 
    @type = N'logbased',
    @source_owner = @owner, 
    @destination_owner = @owner;
GO