如何导出sp_AskBrent的输出?


11

我们有一个随机增加CPU峰值的实例。我想创建一个警报,该警报在CPU上触发超过90%的警报,并自动调用运行的作业sp_AskBrent并通过电子邮件将输出发送给我。但是,该输出在“文本”或HTML输出中均不可读。它甚至不能很好地放入Excel电子表格中。如何获取可读格式的信息?


3
您可以检查在另一个问题上的答案以在PowerShell下运行它,它将输出数据的HTML报告。根据SQL Server的版本,您可以将其设置为SQL Agent作业(PowerShell步骤),然后添加PS代码以通过电子邮件发送文件。

@ShawnMelton是的,我也是来这里发布帖子的,PowerShell运行起来很简单,然后再进行即席格式化。
ConstantineK

Answers:


13

使警报运行EXEC msdb.dbo.sp_send_dbmail使用@query参数运行的作业:

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 = 1参数将结果作为文本格式的附件发送,该格式当然应该可读。如果需要,可以使用@query_result_separator参数以逗号分隔的格式导出结果。

MSDN页面上sp_send_dbmail

本示例使用电子邮件地址danw@Adventure-Works.com向Dan Wilson发送电子邮件。该消息的主题为“工作订单计数”,并执行查询以显示2004年4月30日后不到两天的DueDate工作订单数。数据库邮件将结果附加为文本文件。

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 ;

该存储过程有很多选项。检查MSDN页面,您很可能会获得所需的输出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.