如何导出 sp_AskBrent 的输出?

Mic*_*ick 11 sql-server database-mail format sp-askbrent

我们有一个实例会随机尖峰 CPU。我想创建一个在 CPU 上触发超过 90% 的警报,并自动调用一个正在运行的作业sp_AskBrent并将输出通过电子邮件发送给我。但是,文本或 HTML 输出中的输出不可读。它甚至不适合 Excel 电子表格。如何以可读格式获取信息?

Han*_*non 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;
Run Code Online (Sandbox Code Playgroud)

@attach_query_result_as_file = 1参数将以文本格式将结果作为附件发送,这当然应该是可读的。如果需要,您可以使用@query_result_separator参数以逗号分隔的格式导出结果。

MSDN 页面sp_send_dbmail

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

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 ;
Run Code Online (Sandbox Code Playgroud)

该存储过程有很多选项;检查 MSDN 页面,您可能会得到您想要的输出。