Sp_AskBrent çıktısı nasıl verilir?


11

CPU'yu rastgele yükselten bir örneğimiz var. CPU'ya% 90'ın üzerinde çalışan sp_AskBrentve otomatik olarak çıktıyı çalıştıran ve bana e-posta gönderen bir işi çağıran bir uyarı oluşturmak istiyorum . Ancak, çıktı Metin veya HTML çıktısında okunamıyor. Excel forma sayfasına bile girmiyor. Bilgileri okunabilir bir formatta nasıl alabilirim?


3
PowerShell altında çalıştırmak için başka bir sorudaki cevabımı kontrol edebilirsiniz , verilerin bir HTML raporunu çıktılar. SQL Server sürümüne bağlı olarak, bunu bir SQL Agent işi (PowerShell adımı) olarak ayarlayabilir, daha sonra dosyayı e-posta ile göndermek için PS kodu ekleyebilirsiniz.

@ShawnMelton evet, ben de buraya göndermek için geldim, powershell çalışan o zaman adhoc biçimlendirme yapmak oldukça önemsiz.
ConstantineK

Yanıtlar:


13

Uyarının EXEC msdb.dbo.sp_send_dbmail, şu @queryparametreyle çalışan bir işi çalıştırmasını sağlayın:

EXEC dbo.sp_send_dbmail @profile_name = 'mail_profile'
    , @recipients = 'some@mail.com'
    , @subject = 'some subject'
    , @body = 'the body text goes here'
    , @query = 'EXEC sp_AskBrent;'
    , @attach_query_result_as_file = 1;

@attach_query_result_as_file = 1Parametre kesinlikle okunabilir olmalıdır metin biçiminde bir eki olarak sonuçlarını gönderir. İsterseniz, @query_result_separatorparametreyi kullanarak sonuçları virgülle ayrılmış biçimde dışa aktarabilirsiniz .

Gönderen için MSDN sayfasp_send_dbmail :

Bu örnek, danw@Adventure-Works.com e-posta adresini kullanarak Dan Wilson'a bir e-posta iletisi gönderir. İleti, İş Emri Sayısı konusuna sahiptir ve 30 Nisan 2004 tarihinden iki gün sonra DueDate ile iş emirlerinin sayısını gösteren bir sorgu yürütür. Veritabanı Postası, sonucu bir metin dosyası olarak ekler.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

Bu saklı proc için birçok seçenek vardır; MSDN sayfasını kontrol edin ve muhtemelen çıktıyı tam olarak nasıl istediğinizi alırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.