Bagikan melalui


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 dari Wizard 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. Koneksi 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 dalam wizard untuk menentukan opsi untuk langganan, seperti tempat Agen Distribusi harus berjalan.

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

  6. Pilih opsi dari daftar drop-down Penerapan di Publisher :

    • Untuk menggunakan pembaruan langganan segera, pilih Terapkan perubahan secara bersamaan. Jika Anda memilih opsi ini, dan publikasi memungkinkan pembaruan langganan antrean (default untuk publikasi yang dibuat dengan Panduan Publikasi Baru), properti langganan update_mode diatur ke failover. Mode ini memungkinkan Anda untuk beralih ke pembaruan antrean nanti jika perlu.

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

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

  7. Halaman Masuk untuk Langganan yang Dapat Diperbarui ditampilkan untuk langganan yang menggunakan pembaruan segera atau telah update_mode diatur ke failover antrean. Pada halaman Masuk untuk Langganan yang Dapat Diperbarui, tentukan server tertaut tempat koneksi ke Penerbit dibuat untuk segera memperbarui langganan. 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 masukkan deskripsi tautan di sini.

  8. Selesaikan wizard.

Mengonfigurasi langganan yang dapat diperbarui dari Pelanggan

  1. Koneksi 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. Pada halaman Publikasi Wizard Langganan Baru, pilih Temukan Penerbit SQL Server dari daftar drop-down Penerbit.

  5. Koneksi ke Publisher dalam kotak dialog Koneksi ke Server.

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

  7. Ikuti halaman dalam wizard untuk menentukan opsi untuk langganan, seperti tempat Agen Distribusi harus berjalan.

  8. Pada halaman Langganan yang Dapat Diperbarui dari Wizard Langganan Baru, pastikan Replikasi dipilih.

  9. Pilih opsi dari daftar drop-down Penerapan di Publisher :

    • Untuk menggunakan pembaruan langganan segera, pilih Terapkan perubahan secara bersamaan. Jika Anda memilih opsi ini, dan publikasi memungkinkan pembaruan langganan antrean (default untuk publikasi yang dibuat dengan Panduan Publikasi Baru), properti langganan update_mode diatur ke failover. Mode ini memungkinkan Anda untuk beralih ke pembaruan antrean nanti jika perlu.

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

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

  10. Halaman Masuk untuk Langganan yang Dapat Diperbarui ditampilkan untuk langganan yang menggunakan pembaruan segera atau memiliki update_mode diatur ke failover antrean. Pada halaman Masuk untuk Langganan yang Dapat Diperbarui, tentukan server tertaut tempat koneksi ke Penerbit dibuat untuk segera memperbarui langganan. 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 masukkan deskripsi tautan di sini.

  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 segera memperbarui langganan diaktifkan.
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan penarikan dengan menjalankan sp_helppublication.

    • Jika nilai dalam tataan allow_pull hasil adalah 1, publikasi mendukung langganan penarikan.
    • Jika nilainya allow_pull adalah 0, jalankan sp_changepublication, menentukan allow_pull untuk @property dan true untuk @value.
  3. Di 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 untuk segera diperbarui dengan pembaruan antrean sebagai opsi failover.

    Catatan

    failover mengharuskan publikasi juga diaktifkan untuk pembaruan langganan antrean.

  4. Di Pelanggan, jalankan sp_addpullsubscription_agent. Tentukan yang berikut ini:

    • Parameter @publisher, @publisher_db, dan @publication .
    • Kredensial Microsoft Windows di mana Agen Distribusi di Pelanggan berjalan untuk @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. Di Pelanggan pada 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 Pelanggan saat menyambungkan ke Penerbit. Lihat sp_link_publication untuk pembatasan yang terkait dengan mode keamanan ini.
    • 2 - Gunakan login server tertaut yang sudah ada dan ditentukan pengguna yang dibuat menggunakan sp_addlinkedserver.
  6. Di penerbit, jalankan sp_addsubscription menentukan @publication, @subscriber, @destination_db, nilai tarik untuk @subscription_type, dan nilai yang sama yang ditentukan di 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 segera memperbarui langganan diaktifkan.
  2. Di Publisher, verifikasi bahwa publikasi mendukung langganan push dengan menjalankan sp_helppublication.

    • Jika nilai dalam tataan allow_push 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 - memungkinkan dukungan untuk segera memperbarui.
    • failover - memungkinkan dukungan untuk pembaruan segera dengan pembaruan antrean sebagai opsi failover.

    Catatan

    failover mengharuskan publikasi juga diaktifkan untuk pembaruan langganan antrean.

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

    • @subscriber, @subscriber_db, dan @publication.

    • Kredensial Windows tempat Agen Distribusi di Distributor berjalan untuk @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 masuk SQL Server untuk @subscriber_login dan @subscriber_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambungkan ke Pelanggan.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.
  5. Di Pelanggan pada 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 Pelanggan saat menyambungkan ke Penerbit. Lihat sp_link_publication untuk pembatasan yang terkait dengan mode keamanan ini.
    • 2 - Gunakan login server tertaut yang sudah ada dan ditentukan pengguna yang dibuat menggunakan sp_addlinkedserver.

Membuat langganan pull pembaruan antrean

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

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

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

    • queued tran - mengaktifkan langganan untuk pembaruan antrean.
    • queued failover - memungkinkan dukungan untuk pembaruan antrean dengan pembaruan segera sebagai opsi failover.

    Catatan

    queued failover mengharuskan publikasi juga diaktifkan untuk segera memperbarui langganan. Untuk melakukan failover untuk segera memperbarui, Anda harus menggunakan sp_link_publication untuk menentukan kredensial di mana perubahan di Pelanggan direplikasi ke Penerbit.

  4. Di Pelanggan, jalankan sp_addpullsubscription_agent. Tentukan parameter berikut:

    • @publisher, @publisher_db, dan @publication.
    • Kredensial Windows tempat Agen Distribusi di Pelanggan berjalan dan @job_login@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 Pelanggan di Penerbit, menentukan @publication, @subscriber, @destination_db, nilai tarik untuk @subscription_type, dan nilai yang sama yang ditentukan di langkah 3 untuk @update_mode. Ini mendaftarkan langganan penarikan di Publisher.

Membuat langganan push pembaruan antrean

  1. Di Publisher, verifikasi bahwa publikasi mendukung pembaruan langganan 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 antrean 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 dalam tataan allow_push 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 antrean.
    • queued failover - memungkinkan dukungan untuk pembaruan antrean dengan pembaruan segera sebagai opsi failover.

    Catatan

    Opsi failover yang diantrekan mengharuskan publikasi juga diaktifkan untuk segera memperbarui langganan. Untuk melakukan failover untuk segera memperbarui, Anda harus menggunakan sp_link_publication untuk menentukan kredensial di mana perubahan di Pelanggan direplikasi ke Penerbit.

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

    • @subscriber, @subscriber_db, dan @publication.
    • Kredensial Windows tempat Agen Distribusi di Distributor berjalan untuk @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 masuk SQL Server untuk @subscriber_login dan @subscriber_password, jika Anda perlu menggunakan Autentikasi SQL Server saat menyambungkan ke Pelanggan.
    • Jadwal untuk pekerjaan Agen Distribusi untuk langganan ini.

Mengatur opsi pembaruan resolusi konflik yang diantrekan

Atur opsi resolusi konflik untuk publikasi yang mendukung pembaruan langganan antrean pada halaman Opsi Langganan dari kotak dialog Properti Publikasi - <Publikasi> . Untuk informasi selengkapnya tentang mengakses kotak dialog ini, lihat Menampilkan dan Mengubah Properti Publikasi.

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

    • Pertahankan perubahan Publisher
    • Pertahankan perubahan Pelanggan
    • Menginisialisasi ulang langganan

Contoh

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

Catatan

Skrip ini menggunakan variabel pembuatan skrip sqlcmd. Mereka dalam bentuk $(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

Lihat Juga

Langganan yang Dapat Diperbarui untuk Replikasi Transaksional
Membuat Publikasi
Menggunakan sqlcmd dengan Variabel Pembuatan Skrip