sp_AskBrentの出力をエクスポートする方法


11

CPUをランダムにスパイクするインスタンスがあります。CPUで90%を超えて起動し、実行するジョブを自動的に呼び出しsp_AskBrentて出力をメールで送信するアラートを作成します。ただし、テキストまたはHTML出力では、出力を読み取ることができません。それはExcelスプレッドシートにもうまく行きません。読みやすい形式で情報を取得するにはどうすればよいですか?


3
PowerShellで実行するために別の質問で私の回答を確認できます。データのHTMLレポートが出力されます。SQL Serverのバージョンに応じて、SQLエージェントジョブ(PowerShellステップ)としてセットアップし、PSコードに追加してファイルを電子メールで送信できます。

@ShawnMeltonええ、私はそれを投稿するためにここに来ました、それを実行しているPowershellはアドホックフォーマットをするのはかなり簡単です。
ConstantineK

回答:


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に送信します。メッセージには件名「Work Order Count」があり、DueDateが2004年4月30日から2日未満である作業注文の数を示すクエリを実行します。データベースメールは結果をテキストファイルとして添付します。

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ページを確認してください。そうすれば、思い通りの出力が得られます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.