T-SQL sorgu sonucunu mail ile otomatik gönderme (sp_send_dbmail)

SQL Database den raporlar almak için zaman zaman SSMS üzerinde T-SQL kullanarak sorgular alır, bu sorguları Excell gibi bir dokümana kopyalar ve dokümanı mail ile göndeririz. Yada tüm bunları uğraşmak yerine SQL Server ‘ın “sp_send_dbmail” saklı yordamını kullanarak otomatik hale getirebiliriz.

Aşağıda, kullanacağımız komut dizinini inceleyelim

declare @tab char(1) = char(9)
EXEC msdb.dbo.sp_send_dbmail
 @recipients = '[email protected]',
 @subject = 'Rapor',
 @body = 'Merhaba, Raporunuz Ektedir.' , 
 @body_format = 'HTML',
 @query_no_truncate = 0,
 @query_result_header = 1,
 @exclude_query_output = 0,
 @execute_query_database = 'MY_DB',
 @query = 'Sorgumuz',
 @query_result_separator = @tab,
 @attach_query_result_as_file = 1,
 @query_attachment_filename = 'Rapor.xls';

Daha fazla detay ve seçenek için Microsoft un aşağıdaki makalesini inceleyebilirsiniz.

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql?view=sql-server-ver15

Yukarıda verdiğim komut ile, belirttiğimiz sorguyu belirttiğimiz database üzerinde çalıştır, cevabı sütunlara bölerek excell dosyasına aktar, başlığa Rapor, içeriğine Raporunuz ektedir yazarak [email protected] mail adresine gönder dedik.

“Uygulamada mail iletimini gerçekleştirmek üzere bir mail profiline ihtiyacımız olacak. Eğer daha önce tanımlanmış bir mail profiliniz yok ise “SQL Server Database Mail Kurulumu” isimli makalemden kurulum detaylarını alabilirsiniz.”

Şimdi kodumuzu kullanarak bir Job oluşturalım ve otomatik çalışması için zamanlayalım.

SQL Server Agent => Jobs => New Job penceresinde oluşturacağımız zamanlanmış oto query raporumuza “General” bölümü altında isim verelim.

“Steps” bölümü altında “New” dedikten sonra “Step Name” “Type” ve “Command” bölümlerini dolduralım. Ben command kısmında max 5 bellek tüketicisini gösteren bir query ile kodumuzu düzenledim. Sizde yukarıda belirttiğim kodu sorgunuza göre düzenleyerek command bölümüne ekleyebilirsiniz.

“Schedules” bölümünde raporumuzun hangi periyotlarda otomatik çalışacağını tanımlıyoruz. Ben her hafta pazar 12:00 AM de çalışacak şekilde tanımladım.

Dilerseniz “Notifications” bölümünden çalışacak olan raporun tamamlandığına veya hata alındığına dair bildirimler alabilirsiniz.

“OK” diyerek zamanlanmış sorgularımızı otomatik olarak ekli mailden gönderecek sistemi tamamlamış olduk.

About the Author

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir