Menggunakan Pemberitahuan untuk Peristiwa Agen Replikasi
Berlaku untuk: SQL Server
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 Mengotomatiskan Respons terhadap Pemberitahuan.
Pemberitahuan berikut diinstal ketika komputer dikonfigurasi sebagai Distributor:
ID Pesan | Pemberitahuan yang telah ditentukan sebelumnya | Kondisi yang menyebabkan pemberitahuan diaktifkan | Memasukkan informasi tambahan di 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
- SQL Server Management Studio: Mengonfigurasi Pemberitahuan Replikasi yang Telah Ditentukan Sebelumnya (SQL Server Management Studio)
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 sysreplicationalerts
tabel sistem; informasi yang diberikan sudah diurai dalam bentuk yang mudah digunakan oleh program yang disesuaikan.
Misalnya, jika data dalam Sales.SalesOrderHeader
tabel 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 ke 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 status
kolom, yang dapat digunakan untuk melacak entri yang dilayankan. 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