Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Saat grup ketersediaan AlwaysOn (AG) gagal, yang berisi database yang merupakan pelanggan replikasi, langganan replikasi mungkin gagal. Untuk pelanggan pendorongan replikasi transaksional, agen distribusi akan terus mereplikasi secara otomatis setelah failover jika langganan dibuat menggunakan nama pendengar AG. Untuk pelanggan penarikan replikasi transaksional, agen distribusi akan terus mereplikasi secara otomatis setelah failover, jika langganan dibuat menggunakan nama pendengar AG dan server pelanggan asli aktif dan berjalan. Ini karena pekerjaan agen distribusi hanya dibuat pada pelanggan asli (replika utama AG). Untuk pelanggan penggabungan, administrator replikasi harus mengonfigurasi ulang pelanggan secara manual, dengan membuat ulang langganan.
Apa yang didukung
Replikasi SQL Server mendukung failover otomatis penerbit dan failover otomatis pelanggan transaksional. Pelanggan yang digabungkan dapat menjadi bagian dari AG. Namun, tindakan manual diperlukan untuk mengonfigurasi pelanggan baru setelah failover. AG tidak dapat dikombinasikan dengan skenario WebSync dan SQL Server Compact.
Membuat langganan transaksional dalam grup ketersediaan
Untuk replikasi transaksional, gunakan langkah-langkah berikut untuk mengonfigurasi dan melakukan failover pada AG pelanggan:
Sebelum membuat langganan, tambahkan database pelanggan ke AG yang sesuai.
Tambahkan pendengar AG pelanggan sebagai server tertaut ke semua simpul AG. Langkah ini memastikan bahwa semua mitra failover potensial menyadari dan dapat terhubung ke pendengar.
Menggunakan skrip di bagian Buat langganan push replikasi transaksional, buat langganan menggunakan nama pendengar AG pelanggan. Setelah failover, nama listener selalu tetap valid, sedangkan nama server dari subscriber yang sebenarnya tergantung pada node aktual yang menjadi primary baru.
Catatan
Anda harus menggunakan skrip Transact-SQL untuk membuat langganan. Anda tidak dapat menggunakan Management Studio.
Untuk membuat langganan penarikan:
Menggunakan contoh skrip di bagian Buat langganan penarikan replikasi transaksional, buat langganan menggunakan nama pendengar AG pelanggan.
Setelah failover, buat pekerjaan agen distribusi pada replika utama baru menggunakan prosedur tersimpan
sp_addpullsubscription_agent.
Saat Anda membuat langganan penarikan dengan database langganan di AG, Anda harus menonaktifkan tugas agen distribusi pada replika utama lama dan mengaktifkannya pada replika utama baru setelah setiap failover.
Membuat langganan push replikasi transaksional
-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO
EXEC sp_addsubscription @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@destination_db = N'<subscriber database name>',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0;
GO
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@subscriber_db = N'<subscriber database name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Membuat langganan penarikan replikasi transaksional
-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO
EXEC sp_addpullsubscription @publisher = N'<publisher name>',
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@subscription_type = N'pull';
GO
EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
@subscriber = N'<AG listener name or alias>',
@distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Persyaratan pendengar grup ketersediaan
Saat Anda menjalankan sp_addpullsubscription_agent untuk pelanggan yang merupakan bagian dari AG, Anda harus meneruskan @subscriber nilai parameter ke prosedur tersimpan sebagai nama pendengar AG. Jika Anda menjalankan SQL Server 2016 (13.x) dan versi yang lebih lama, atau SQL Server 2017 (14.x) sebelum CU 16, prosedur tersimpan tidak mereferensikan nama pendengar AG. Ini membuat langganan dengan nama server pelanggan tempat perintah dijalankan. Untuk mengatasi masalah ini, perbarui @subscriber parameter secara manual pada Agen Distribusi Replikasi dengan nilai nama pendengar AG.
Jika pendengar AG langganan menggunakan port yang bukan default, memberikan nomor port sebagai bagian dari nama pendengar AG pada parameter @subscriber tidak didukung di Windows. Sebagai solusinya, Anda dapat membuat alias untuk pendengar dan port pada server penerbit, distributor, dan pelanggan menggunakan Alias (Pengelola Konfigurasi SQL Server) atau alat Utilitas Jaringan Klien SQL Server (cliconfg) untuk SQL Server 2022 (16.x) dan versi yang lebih baru, dan meneruskan alias sebagai @subscriber nilai parameter.
Melanjutkan agen penggabungan setelah grup ketersediaan pelanggan gagal
Untuk replikasi penggabungan, administrator replikasi harus mengonfigurasi ulang pelanggan secara manual dengan langkah-langkah berikut:
Jalankan
sp_subscription_cleanupuntuk menghapus langganan lama untuk pelanggan. Lakukan tindakan ini pada replika utama baru (yang sebelumnya merupakan replika sekunder).Buat ulang langganan dengan membuat langganan baru, dimulai dengan rekam jepret baru.
Catatan
Proses ini tidak praktis bagi pengguna replikasi penggabungan. Namun, skenario utama untuk replikasi penggabungan adalah pengguna yang terputus (desktop, laptop, perangkat handset), yang tidak menggunakan AG di sisi pelanggan.