Bagaimana cara mengekspor output sp_AskBrent?


11

Kami memiliki contoh yang secara acak paku CPU. Saya ingin membuat peringatan yang menyala pada CPU lebih dari 90% dan secara otomatis memanggil pekerjaan yang berjalan sp_AskBrentdan mengirimi saya hasilnya melalui email. Namun, output tidak dapat dibaca dalam output Teks atau HTML. Bahkan tidak masuk ke lembar spread Excel. Bagaimana saya bisa mendapatkan info dalam format yang dapat dibaca?


3
Anda dapat memeriksa jawaban saya pada pertanyaan lain untuk menjalankannya di bawah PowerShell, itu akan menampilkan laporan HTML data. Bergantung pada versi SQL Server Anda dapat mengaturnya sebagai pekerjaan SQL Agent (langkah PowerShell), lalu tambahkan kode PS untuk mengirim email file.

@ShawnMelton ya, saya datang ke sini untuk memposting itu juga, menjalankan powershell cukup sepele untuk kemudian melakukan format adhoc.
ConstantineK

Jawaban:


13

Jadikan lansiran menjalankan pekerjaan yang menjalankan EXEC msdb.dbo.sp_send_dbmaildengan @queryparameter:

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;

The @attach_query_result_as_file = 1parameter akan mengirimkan hasil sebagai lampiran dalam format teks, yang tentunya harus dibaca. Jika Anda mau, Anda bisa mengekspor hasilnya dalam format yang dibatasi koma menggunakan @query_result_separatorparameter.

Dari halaman MSDN untuksp_send_dbmail :

Contoh ini mengirim pesan email ke Dan Wilson menggunakan alamat email danw@Adventure-Works.com. Pesan tersebut memiliki hitungan Perintah Kerja, dan mengeksekusi kueri yang menunjukkan jumlah perintah kerja dengan DueDate kurang dari dua hari setelah 30 April 2004. Database Mail melampirkan hasilnya sebagai file teks.

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 ;

Ada banyak opsi untuk proc yang disimpan; periksa halaman MSDN dan kemungkinan Anda akan mendapatkan output persis seperti yang Anda inginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.