Apakah mungkin untuk mengatur peringatan di SQL Server 2008 yang akan mengirim email kapan saja pekerjaan dalam kategori tertentu gagal?
Saya bertanya-tanya karena saya ingin mengatur email kapan saja langganan SSR gagal - dan semua langganan ini adalah pekerjaan dalam kategori Server Laporan .
EDIT - ternyata ketika langganan SSRS gagal, pekerjaan itu sendiri tidak gagal, jadi pertanyaan saya tidak akan berlaku untuk penggunaan pemantauan langganan SSRS. Namun saya masih ingin tahu untuk pekerjaan lain yang kami jalankan di lingkungan kami
AND EXISTS
bagian dariINSERT/SELECT
. Dan mungkin mengubah namanyaReportServerJob_FailQueue
menjadi sesuatu yang lebih umum. :-)Jawaban:
Anda dapat membuat pekerjaan yang memeriksa tabel msdb.dbo.sysjobhistory setiap menit (atau sesering yang Anda inginkan). Anda mungkin ingin menerapkan tabel antrian sehingga Anda hanya pernah mengirim pesan untuk setiap kegagalan satu kali.
Jadi kode Anda, yang dapat Anda jadwalkan dalam suatu pekerjaan, menjadi:
Sekarang saya berasumsi Anda ingin mengirim email individu untuk setiap kegagalan, jadi ini bisa menjadi bagian dari pekerjaan juga (atau bagian dari pekerjaan yang berbeda, meskipun itu tidak selalu bijaksana):
Ada beberapa opsi lain juga:
Jika Database Mail belum diatur, silakan lihat tutorial ini .
Anda juga dapat menggunakan alat pihak ke-3 (mis. SQL Sentry Event Manager ) yang akan membuat ini lebih mudah. Pengungkapan penuh: Saya bekerja untuk SQL Sentry.
sumber
Berdasarkan hasil edit Anda, ini hanya akan menjadi perpanjangan dari jawaban Harun, mengenai kegagalan langganan SSR sendiri (bukan hanya pekerjaan SQL Agent). Saya sarankan hanya menambahkan dalam langkah ke pekerjaan pemantauan pekerjaan, atau Anda bisa melakukan ini sebagai pekerjaan yang terpisah sama sekali.
Untuk mendapatkan status berlangganan Anda hanya perlu memeriksa
ReportServer.dbo.ExecutionLog3
tampilan . TheStatus
kolom akan menampilkan apa-apa tapirsSuccess
pada kegagalan. Cukup filter untukRequestType = 'Subscription'
. Anda akan ingin memasukkan beberapa cek waktu, jadi Anda tidak memeriksa semua catatan setiap waktu. Jika Anda menjalankan pekerjaan setiap 15 menit, cukup periksaTimeStart
15 menit terakhir.sumber