Membuat Langganan yang Dapat Diperbarui ke Publikasi Transaksi

Berlaku untuk:SQL Server

Catatan

Fitur ini tetap didukung dalam versi SQL Server dari 2012 hingga 2016. 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.

Replikasi transaksional memungkinkan perubahan yang dilakukan pada Pelanggan untuk disebarluaskan kembali ke Penerbit menggunakan langganan pembaruan langsung atau antrean. Anda dapat membuat pembaruan langganan secara terprogram menggunakan prosedur tersimpan replikasi.

Konfigurasikan langganan yang dapat diperbarui pada halaman Langganan yang Dapat Diperbarui di Panduan Langganan Baru. Halaman ini hanya tersedia jika Anda telah mengaktifkan publikasi transaksi untuk langganan yang dapat diperbarui. Untuk informasi selengkapnya tentang mengaktifkan langganan yang dapat diperbarui, lihat Mengaktifkan Pembaruan Langganan untuk Publikasi Transaksional.

Mengonfigurasi langganan yang dapat diperbarui dari Publisher

  1. Sambungkan ke Publisher di Microsoft SQL Server Management Studio, lalu perluas simpul server.

  2. Perluas folder Replikasi, lalu perluas folder Publikasi Lokal.

  3. Klik kanan publikasi transaksional yang diaktifkan untuk memperbarui langganan, lalu klik Langganan Baru.

  4. Ikuti halaman pada wizard untuk menentukan opsi langganan, seperti tempat Distribution Agent dijalankan.

  5. Pada halaman Langganan yang Dapat Diperbarui di Wizard Langganan Baru, pastikan Replikasi dipilih.

  6. Pilih opsi dari daftar dropdown Commit at Publisher:

    • Untuk menggunakan pembaruan langganan segera, pilih Terapkan perubahan secara bersamaan. Jika Anda memilih opsi ini, dan publikasi mengizinkan langganan pembaruan terantrikan (default untuk publikasi yang dibuat dengan New Publication Wizard), properti update_mode diatur ke failover. Mode ini memungkinkan Anda beralih ke pembaruan terantri nanti jika diperlukan.

    • Untuk menggunakan langganan pembaruan yang diantrikan, pilih Antrekan perubahan dan terapkan jika memungkinkan. Jika Anda memilih opsi ini, dan publikasi mengizinkan langganan dengan pembaruan segera (nilai bawaan untuk publikasi yang dibuat dengan Wizard Publikasi Baru), dan Subscriber menjalankan SQL Server 2005 atau versi yang lebih baru, properti langganan update_mode diatur ke failover terantre. Mode ini memungkinkan Anda untuk beralih ke pembaruan segera nanti jika perlu.

    Untuk informasi tentang beralih antar mode pembaruan, lihat Beralih Antar Mode Pembaruan untuk Langganan Transaksional yang Dapat Diperbarui.

  7. Halaman Login untuk Langganan yang Dapat Diperbarui ditampilkan untuk langganan yang menggunakan pembaruan segera atau memiliki update_mode yang diatur ke queued failover. Pada halaman Login untuk Langganan yang Dapat Diperbarui, tentukan server tertaut yang melaluinya koneksi ke Publisher dilakukan untuk langganan pembaruan segera. Koneksi digunakan oleh pemicu yang diaktifkan pada Pelanggan dan menyebarkan perubahan ke Penerbit. pilih salah satu dari opsi berikut ini:

    • Buat server tertaut yang tersambung menggunakan Autentikasi SQL Server. Pilih opsi ini jika Anda belum menentukan server jarak jauh atau server tertaut antara Pelanggan dan Penerbit. Replikasi membuat server tertaut untuk Anda. Akun yang Anda tentukan harus sudah ada di Publisher.

    • Gunakan server tertaut atau server jarak jauh yang telah Anda tentukan. Pilih opsi ini jika Anda telah menentukan server jarak jauh atau server tertaut antara Pelanggan dan Penerbit menggunakan sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio, atau metode lain.

    Untuk informasi tentang izin yang diperlukan oleh akun server tertaut, lihat Langganan Pembaruan Antrean dari Amankan Pelanggan.

  8. Selesaikan wizard.

Konfigurasikan langganan yang bisa diperbarui dari Subscriber

  1. Sambungkan ke Pelanggan di SQL Server Management Studio, lalu perluas simpul server.

  2. Perluas folder Replikasi.

  3. Klik kanan folder Langganan Lokal, lalu klik Langganan Baru.

  4. Di halaman Publikasi pada Wizard Langganan Baru, pilih Temukan SQL Server Publisher dari daftar dropdown Publisher.

  5. Sambungkan ke Publisher di kotak dialog Sambungkan ke Server.

  6. Pilih publikasi transaksional yang diaktifkan untuk memperbarui langganan di halaman Publikasi .

  7. Ikuti halaman pada wizard untuk menentukan opsi langganan, seperti tempat Distribution Agent dijalankan.

  8. Di halaman Langganan yang Dapat Diperbarui pada Wizard Langganan Baru, pastikan Replicate dipilih.

  9. Pilih opsi dari daftar dropdown Commit at Publisher:

    • Untuk menggunakan pembaruan langganan segera, pilih Terapkan perubahan secara bersamaan. Jika Anda memilih opsi ini, dan publikasi mengizinkan langganan pembaruan terantrikan (default untuk publikasi yang dibuat dengan New Publication Wizard), properti update_mode diatur ke failover. Mode ini memungkinkan Anda beralih ke pembaruan terantri nanti jika diperlukan.

    • Untuk menggunakan langganan pembaruan yang diantrikan, pilih Antrekan perubahan dan terapkan jika memungkinkan. Jika Anda memilih opsi ini, publikasi memungkinkan langganan pembaruan segera (bawaan untuk publikasi yang dibuat dengan Wizard Publikasi Baru), dan Subscriber menjalankan SQL Server 2005 atau versi yang lebih baru, properti langganan update_mode diatur ke antrean failover. Mode ini memungkinkan Anda untuk beralih ke pembaruan segera nanti jika perlu.

    Untuk informasi tentang beralih antar mode pembaruan, lihat Beralih Antar Mode Pembaruan untuk Langganan Transaksional yang Dapat Diperbarui.

  10. Halaman Login untuk Langganan yang Dapat Diperbarui ditampilkan untuk langganan yang menggunakan pembaruan segera atau memiliki update_mode yang diatur ke antrean failover. Pada halaman Login untuk Langganan yang Dapat Diperbarui, tentukan server tertaut yang melaluinya koneksi ke Publisher dilakukan untuk langganan pembaruan segera. Koneksi digunakan oleh pemicu yang diaktifkan pada Pelanggan dan menyebarkan perubahan ke Penerbit. pilih salah satu dari opsi berikut ini:

    • Buat server tertaut yang tersambung menggunakan Autentikasi SQL Server. Pilih opsi ini jika Anda belum menentukan server jarak jauh atau server tertaut antara Pelanggan dan Penerbit. Replikasi membuat server tertaut untuk Anda. Akun yang Anda tentukan harus sudah ada di Publisher.

    • Gunakan server tertaut atau server jarak jauh yang telah Anda tentukan. Pilih opsi ini jika Anda telah menentukan server jarak jauh atau server tertaut antara Pelanggan dan Penerbit menggunakan sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio, atau metode lain.

    Untuk informasi tentang izin yang diperlukan oleh akun server tertaut, lihat Langganan Pembaruan Antrean dari Amankan Pelanggan.

  11. Selesaikan wizard.

Membuat langganan pull pembaruan segera

  1. Di Publisher, verifikasi bahwa publikasi mendukung pembaruan langganan segera dengan menjalankan sp_helppublication.

    • Jika nilai allow_sync_tran dalam kumpulan hasil adalah 1, publikasi mendukung pembaruan langganan segera.
    • Jika nilai allow_sync_tran dalam kumpulan hasil adalah 0, publikasi harus dibuat ulang dengan langganan pembaruan segera diaktifkan.
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan penarikan dengan menjalankan sp_helppublication.

    • Jika nilai allow_pull dalam kumpulan hasil adalah 1, publikasi mendukung langganan pull.
    • Jika nilainya allow_pull adalah 0, jalankan sp_changepublication, menentukan allow_pull untuk @property dan true untuk @value.
  3. Pada Pelanggan, jalankan sp_addpullsubscription. Tentukan @publisher dan @publication, dan salah satu nilai berikut untuk @update_mode:

    • sync tran - memungkinkan langganan untuk segera diperbarui.
    • failover - memungkinkan langganan agar segera diperbarui, dengan pembaruan yang diantrekan sebagai opsi failover.

    Catatan

    failover mengharuskan agar publikasi juga diaktifkan untuk langganan pembaruan berantre.

  4. Pada Subscriber, jalankan sp_addpullsubscription_agent. Tentukan yang berikut ini:

    • Parameter @publisher, @publisher_db, dan @publication .
    • Kredensial Microsoft Windows yang digunakan Agen Distribusi pada Subscriber untuk berjalan bagi @job_login dan @job_password.

    Catatan

    Koneksi yang dibuat menggunakan Autentikasi Terintegrasi Windows selalu dibuat menggunakan kredensial Windows yang ditentukan oleh @job_login dan @job_password. Agen Distribusi selalu membuat koneksi lokal ke Pelanggan menggunakan Autentikasi Terintegrasi Windows. Secara default, agen tersambung ke Distributor menggunakan Autentikasi Terintegrasi Windows.

    • (Opsional) Nilai 0 untuk @distributor_security_mode dan informasi masuk Microsoft SQL Server untuk @distributor_login dan @distributor_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambungkan ke Distributor.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.
  5. Pada Subscriber di database langganan, jalankan sp_link_publication. Tentukan @publisher, @publication, nama database publikasi untuk @publisher_db, dan salah satu nilai berikut untuk @security_mode:

    • 0 - Gunakan Autentikasi SQL Server saat membuat pembaruan di Publisher. Opsi ini mengharuskan Anda menentukan login yang valid di Publisher untuk @login dan @password.
    • 1 - Gunakan konteks keamanan pengguna yang membuat perubahan di Subscriber saat terhubung ke Publisher. Lihat sp_link_publication untuk pembatasan yang terkait dengan mode keamanan ini.
    • 2 - Gunakan login server tertaut yang sudah ada, yang ditentukan oleh pengguna, dan dibuat menggunakan sp_addlinkedserver.
  6. Di penerbit, jalankan sp_addsubscription dengan menentukan @publication, @subscriber, @destination_db, nilai pull untuk @subscription_type, dan nilai yang sama seperti yang ditentukan pada langkah 3 untuk @update_mode. Ini mendaftarkan langganan penarikan di Publisher.

Membuat langganan push pembaruan segera

  1. Di Publisher, verifikasi bahwa publikasi mendukung pembaruan langganan segera dengan menjalankan sp_helppublication.

    • Jika nilai allow_sync_tran dalam kumpulan hasil adalah 1, publikasi mendukung pembaruan langganan segera.
    • Jika nilai allow_sync_tran dalam kumpulan hasil adalah 0, publikasi harus dibuat ulang dengan langganan pembaruan segera diaktifkan.
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan push dengan menjalankan sp_helppublication.

    • Jika nilai allow_push dalam kumpulan hasil adalah 1, publikasi mendukung langganan push.
    • Jika nilainya allow_push adalah 0, jalankan sp_changepublication, menentukan allow_push untuk @property dan true untuk @value.
  3. Di Publisher, jalankan sp_addsubscription. Tentukan @publication, @subscriber, @destination_db, dan salah satu nilai berikut untuk @update_mode:

    • sync tran - mengaktifkan dukungan untuk pembaruan segera.
    • failover - mendukung pembaruan langsung dengan pembaruan dalam antrean sebagai opsi cadangan.

    Catatan

    failover mengharuskan agar publikasi juga diaktifkan untuk langganan pembaruan berantre.

  4. Di Publisher, jalankan sp_addpushsubscription_agent. Tentukan parameter berikut:

    • @subscriber, @subscriber_db, dan @publication.

    • Kredensial Windows yang digunakan Agen Distribusi pada Distributor untuk berjalan bagi @job_login dan @job_password.

    Catatan

    Koneksi yang dibuat menggunakan Autentikasi Terintegrasi Windows selalu dibuat menggunakan kredensial Windows yang ditentukan oleh @job_login dan @job_password. Agen Distribusi selalu membuat koneksi lokal ke Distributor menggunakan Autentikasi Terintegrasi Windows. Secara default, agen akan terhubung ke Pelanggan menggunakan Autentikasi Terintegrasi Windows.

    • (Opsional) Nilai 0 untuk @subscriber_security_mode dan informasi login SQL Server untuk @subscriber_login dan @subscriber_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambung ke Subscriber.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.
  5. Pada Subscriber di database langganan, jalankan sp_link_publication. Tentukan @publisher, @publication, nama database publikasi untuk @publisher_db, dan salah satu nilai berikut untuk @security_mode:

    • 0 - Gunakan Autentikasi SQL Server saat membuat pembaruan di Publisher. Opsi ini mengharuskan Anda menentukan login yang valid di Publisher untuk @login dan @password.
    • 1 - Gunakan konteks keamanan pengguna yang membuat perubahan di Subscriber saat terhubung ke Publisher. Lihat sp_link_publication untuk pembatasan yang terkait dengan mode keamanan ini.
    • 2 - Gunakan login server tertaut yang sudah ada, yang ditentukan oleh pengguna, dan dibuat menggunakan sp_addlinkedserver.

Buat langganan pull pembaruan berantrian

  1. Pada Publisher, pastikan bahwa publikasi mendukung langganan pembaruan dalam antrean dengan menjalankan sp_helppublication.

    • Jika nilai allow_queued_tran dalam kumpulan hasil adalah 1, publikasi mendukung pembaruan langganan segera.
    • Jika nilai allow_queued_tran dalam kumpulan hasil adalah 0, publikasi harus dibuat ulang dengan langganan pembaruan berantrian diaktifkan.
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan penarikan dengan menjalankan sp_helppublication.

    • Jika nilai allow_pull dalam kumpulan hasil adalah 1, publikasi mendukung langganan pull.
    • Jika nilainya allow_pull adalah 0, jalankan sp_changepublication, menentukan allow_pull untuk @property dan true untuk @value.
  3. Pada Pelanggan, jalankan sp_addpullsubscription. Tentukan @publisher dan @publication, dan salah satu nilai berikut untuk @update_mode:

    • queued tran - mengaktifkan langganan untuk pembaruan yang diantrikan.
    • queued failover - mendukung pembaruan terantre dengan pembaruan langsung sebagai opsi failover.

    Catatan

    queued failover mengharuskan publikasi tersebut juga diaktifkan untuk langganan pembaruan segera. Untuk beralih ke mode pembaruan segera, Anda harus menggunakan sp_link_publication untuk menentukan kredensial yang digunakan agar perubahan pada Subscriber direplikasi ke Publisher.

  4. Pada Subscriber, jalankan sp_addpullsubscription_agent. Tentukan parameter berikut:

    • @publisher, @publisher_db, dan @publication.
    • Kredensial Windows yang digunakan oleh Agen Distribusi pada Subscriber untuk berjalan dengan @job_login dan @job_password.

    Catatan

    Koneksi yang dibuat menggunakan Autentikasi Terintegrasi Windows selalu dibuat menggunakan kredensial Windows yang ditentukan oleh @job_login dan @job_password. Agen Distribusi selalu membuat koneksi lokal ke Pelanggan menggunakan Autentikasi Terintegrasi Windows. Secara default, agen tersambung ke Distributor menggunakan Autentikasi Terintegrasi Windows.

    • (Opsional) Nilai 0 untuk @distributor_security_mode dan informasi masuk SQL Server untuk @distributor_login dan @distributor_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambungkan ke Distributor.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.
  5. Di penerbit, jalankan sp_addsubscriber untuk mendaftarkan Subscriber di Publisher, dengan menentukan @publication, @subscriber, @destination_db, nilai pull untuk @subscription_type, dan nilai yang sama seperti yang ditentukan pada langkah 3 untuk @update_mode. Ini mendaftarkan langganan penarikan di Publisher.

Buat langganan push untuk pembaruan dalam antrean

  1. Pada Publisher, pastikan bahwa publikasi mendukung langganan pembaruan dalam antrean dengan menjalankan sp_helppublication.

    • Jika nilai allow_queued_tran dalam kumpulan hasil adalah 1, publikasi mendukung pembaruan langganan segera.
    • Jika nilai allow_queued_tran dalam himpunan hasil adalah 0, publikasi harus dibuat ulang dengan langganan pembaruan berantrian diaktifkan. Untuk informasi selengkapnya, lihat Cara: Mengaktifkan Pembaruan Langganan untuk Publikasi Transaksional (Pemrograman Transact-SQL Replikasi).
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan push dengan menjalankan sp_helppublication.

    • Jika nilai allow_push dalam kumpulan hasil adalah 1, publikasi mendukung langganan push.
    • Jika nilai allow_push adalah 0, jalankan sp_changepublication, tentukan allow_push untuk @property dan true untuk @value.
  3. Di Publisher, jalankan sp_addsubscription. Tentukan @publication, @subscriber, @destination_db, dan salah satu nilai berikut untuk @update_mode:

    • queued tran - mengaktifkan langganan untuk pembaruan yang diantrikan.
    • queued failover - mendukung pembaruan terantre dengan pembaruan langsung sebagai opsi failover.

    Catatan

    Opsi failover yang diantrekan mengharuskan publikasi juga diaktifkan untuk segera memperbarui langganan. Untuk beralih ke mode pembaruan segera, Anda harus menggunakan sp_link_publication untuk menentukan kredensial yang digunakan agar perubahan pada Subscriber direplikasi ke Publisher.

  4. Di Publisher, jalankan sp_addpushsubscription_agent. Tentukan parameter berikut:

    • @subscriber, @subscriber_db, dan @publication.
    • Kredensial Windows yang digunakan Agen Distribusi pada Distributor untuk berjalan bagi @job_login dan @job_password.

    Catatan

    Koneksi yang dibuat menggunakan Autentikasi Terintegrasi Windows selalu dibuat menggunakan kredensial Windows yang ditentukan oleh @job_login dan @job_password. Agen Distribusi selalu membuat koneksi lokal ke Distributor menggunakan Autentikasi Terintegrasi Windows. Secara default, agen terhubung ke Pelanggan menggunakan Autentikasi Terintegrasi Windows.

    • (Opsional) Nilai 0 untuk @subscriber_security_mode dan informasi login SQL Server untuk @subscriber_login dan @subscriber_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambung ke Subscriber.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.

Mengatur opsi pembaruan resolusi konflik yang diantrekan

Atur opsi penyelesaian konflik untuk publikasi yang mendukung langganan pembaruan berantrian pada halaman Opsi Langganan di kotak dialog Properti Publikasi - <Publikasi>. Untuk informasi selengkapnya tentang mengakses kotak dialog ini, lihat Melihat dan Mengubah Properti Publikasi.

  1. Pada halaman Opsi Langganan di kotak dialog Properti Publikasi - <Publikasi>, pilih salah satu nilai berikut untuk opsi Kebijakan penyelesaian konflik:

    • Pertahankan perubahan pada Penerbit
    • Pertahankan perubahan Pelanggan
    • Menginisialisasi ulang langganan

Contoh

Contoh ini membuat langganan pull dengan pembaruan segera pada publikasi yang mendukung langganan dengan pembaruan segera. Nilai login dan kata sandi disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd.

Catatan

Skrip ini menggunakan variabel pembuatan skrip sqlcmd. Bentuknya adalah $(MyVariable). Untuk informasi tentang cara menggunakan variabel pembuatan skrip pada baris perintah dan di SQL Server Management Studio, lihat bagian Menjalankan Skrip Replikasi di topik Konsep Prosedur Tersimpan Sistem Replikasi.

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS NVARCHAR(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2022';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription
    @publisher = @publisher,
    @publication = @publication,
    @publisher_db = @publicationDB,
    @update_mode = N'failover',
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent
    @publisher = @publisher,
    @publisher_db = @publicationDB,
    @publication = @publication,
    @job_login = @login,
    @job_password = @password;

-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication
    @publisher = @publisher,
    @publication = @publication,
    @publisher_db = @publicationDB,
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2022;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriptionDB = N'AdventureWorks2022Replica';
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE AdventureWorks2022;
EXEC sp_addsubscription
    @publication = @publication,
    @subscriber = @subscriber,
    @destination_db = @subscriptionDB,
    @subscription_type = N'pull',
    @update_mode = N'failover';
GO