Bagikan melalui


Menggunakan Pemberitahuan untuk Peristiwa Agen Replikasi

Berlaku untuk:SQL ServerAzure SQL Managed Instance

SQL Server Management Studio dan Microsoft SQL Server Agent menyediakan cara untuk memantau peristiwa, seperti peristiwa agen replikasi, menggunakan pemberitahuan. SQL Server Agent memantau log aplikasi Windows untuk peristiwa yang terkait dengan pemberitahuan. Jika peristiwa seperti itu terjadi, SQL Server Agent merespons secara otomatis, dengan menjalankan tugas yang telah Anda tentukan dan/atau mengirim email atau pesan pager ke operator tertentu. SQL Server menyertakan serangkaian pemberitahuan yang telah ditentukan sebelumnya untuk agen replikasi yang dapat Anda konfigurasi untuk menjalankan tugas dan/atau memberi tahu operator. Untuk informasi selengkapnya tentang menentukan tugas yang akan dijalankan, lihat bagian "Mengotomatiskan Respons terhadap Pemberitahuan" dalam topik ini.

Pemberitahuan berikut diinstal ketika komputer dikonfigurasi sebagai Distributor:

ID Pesan Pemberitahuan yang telah ditentukan sebelumnya Kondisi yang menyebabkan pemberitahuan diaktifkan Memasukkan informasi tambahan dalam msdb.. sysreplicationalerts
14150 Replikasi: keberhasilan agen Agen berhasil dimatikan. Ya
14151 Replikasi: kegagalan agen Agen dimatikan dengan kesalahan. Ya
14152 Replikasi: agen mencoba kembali Agen dimatikan setelah gagal mencoba kembali operasi (agen mengalami kesalahan seperti server tidak tersedia, kebuntuan, kegagalan koneksi, atau kegagalan waktu habis). Ya
14157 Replikasi: langganan kedaluwarsa dihilangkan Langganan kedaluwarsa dihilangkan. No
20572 Replikasi: Langganan diinisialisasi ulang setelah kegagalan validasi Pekerjaan respons 'Menginisialisasi ulang langganan pada kegagalan validasi data' berhasil menginisialisasi ulang langganan. No
20574 Replikasi: Pelanggan telah gagal validasi data Agen Distribusi atau Penggabungan gagal validasi data. Ya
20575 Replikasi: Pelanggan telah melewati validasi data Agen Distribusi atau Penggabungan melewati validasi data. Ya
20578 Replikasi: penonaktifan kustom agen Ketika validasi data dipanggil melalui sp_publication_validation dan @shutdown_agent diatur ke 1, agen distribusi dimatikan setelah validasi selesai. Ya
22815 Pemberitahuan deteksi konflik peer-to-peer Agen Distribusi mendeteksi konflik saat mencoba menerapkan perubahan pada simpul peer-to-peer. Ya

Selain pemberitahuan ini, Monitor Replikasi menyediakan serangkaian peringatan dan pemberitahuan yang terkait dengan status dan performa. Untuk informasi selengkapnya, lihat Mengatur Ambang batas dan Peringatan di Monitor Replikasi. Anda juga dapat menentukan pemberitahuan untuk peristiwa replikasi lain menggunakan infrastruktur pemberitahuan SQL Server. Untuk informasi selengkapnya, lihat Membuat Peristiwa yang Ditentukan Pengguna.

Untuk mengonfigurasi pemberitahuan replikasi yang telah ditentukan sebelumnya

Menampilkan Log Aplikasi Secara Langsung

Untuk melihat log aplikasi Windows, gunakan Pemantau Peristiwa Microsoft Windows. Log aplikasi berisi pesan kesalahan SQL Server serta pesan untuk banyak aktivitas lain di komputer. Tidak seperti log kesalahan SQL Server, log aplikasi baru tidak dibuat setiap kali Anda memulai SQL Server (setiap sesi SQL Server menulis peristiwa baru ke log aplikasi yang ada); namun, Anda dapat menentukan berapa lama peristiwa yang dicatat akan dipertahankan. Saat Anda melihat log aplikasi Windows, Anda dapat memfilter log untuk peristiwa tertentu. Untuk informasi selengkapnya, lihat dokumentasi Windows.

Mengotomatiskan Respons terhadap Pemberitahuan

Replikasi menyediakan pekerjaan respons untuk langganan yang gagal validasi data, dan juga menyediakan kerangka kerja untuk membuat respons otomatis tambahan terhadap pemberitahuan. Pekerjaan respons berjudul Menginisialisasi ulang langganan pada kegagalan validasi data dan disimpan di folder Pekerjaan Agen SQL Server di SQL Server Management Studio. Untuk informasi tentang mengaktifkan pekerjaan respons ini, lihat Mengonfigurasi Pemberitahuan Replikasi yang Telah Ditentukan (SQL Server Management Studio). Jika artikel dalam publikasi transaksi gagal validasi, pekerjaan respons hanya menginisialisasi ulang artikel yang gagal. Jika artikel dalam publikasi penggabungan gagal validasi, pekerjaan respons akan menginisialisasi ulang semua artikel dalam publikasi.

Kerangka kerja untuk Mengotomatiskan Respons

Biasanya, ketika pemberitahuan terjadi, satu-satunya informasi yang Anda miliki untuk membantu Anda memahami apa yang menyebabkan pemberitahuan dan tindakan yang sesuai untuk diambil terkandung dalam pesan pemberitahuan itu sendiri. Mengurai informasi ini dapat rawan kesalahan dan memakan waktu. Replikasi membuat respons otomatis lebih mudah dengan memberikan informasi tambahan tentang pemberitahuan dalam tabel sistem sysreplicationalerts ; informasi yang diberikan sudah diurai dalam formulir yang mudah digunakan oleh program yang disesuaikan.

Misalnya, jika data dalam tabel Sales.SalesOrderHeader di Pelanggan A gagal validasi, SQL Server dapat memicu pesan 20574, memberi tahu Anda tentang kegagalan tersebut. Pesan yang Anda terima adalah: "Pelanggan 'A', langganan artikel 'SalesOrderHeader' dalam publikasi 'MyPublication' validasi data gagal."

Jika Anda membuat respons berdasarkan pesan, Anda harus mengurai nama Pelanggan, nama artikel, nama publikasi, dan kesalahan secara manual dari pesan. Namun, karena Agen Distribusi dan Agen Penggabungan menulis informasi yang sama kepada sysreplicationalerts (bersama dengan detail seperti jenis agen, waktu pemberitahuan, database publikasi, database Pelanggan, dan jenis publikasi) pekerjaan respons dapat langsung meminta informasi yang relevan dari tabel. Meskipun baris yang tepat tidak dapat dikaitkan dengan instans pemberitahuan tertentu, tabel memiliki kolom status , yang dapat digunakan untuk melacak entri layanan. Entri dalam tabel ini dipertahankan untuk periode retensi riwayat.

Misalnya, jika Anda membuat pekerjaan respons di Transact-SQL bahwa pesan pemberitahuan layanan 20574, Anda mungkin menggunakan logika berikut:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int  
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,   
  subscriber_db, alert_id from   
  msdb..sysreplicationalerts where  
  alert_error_code = 20574 and status = 0  
  for read only  
open hc  
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
while (@@fetch_status <> -1)  
begin  
/* Do custom work  */  
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */  
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id  
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
end  
close hc  
deallocate hc  

Lihat Juga

Administrasi Agen Replikasi
Praktik Terbaik untuk Administrasi Replikasi
Memantau (Replikasi)