HTMLを作成し、sp_send_dbmailを使用して送信したいと思います。このページのオプションCは、その方法を説明しています。 http://msdn.microsoft.com/en-us/library/ms190307.aspx
しかし、ここに私のキャッチがあります。AbcStatsというストアドプロシージャを作成しました。かなり頻繁に、私はSSMSにアクセスし、電子メールなしで「exec ABCStats」を実行し、画面のデータグリッドに結果セットを表示したいだけです。結果を「Good」または「Bad」と評価する独自の基準をいくつか設定しました。ストアドプロシージャは、何かが悪い場合は1を返し、すべてが良い場合は0を返します。
次に、以下に示すように、SprocJobAbcAlertを実行するSQLエージェントジョブを作成しました。
ALTER Procedure
[dbo].[JobAbcAlert]
(
@SendEmailOnlyOnError bit = 1
)
as
begin
DECLARE @Status int
DECLARE @BoolSendEmail bit = 0
DECLARE @emailSubject varchar(100) = 'BizTalk Feed Status - Good'
-- Call Stored Proc first time to find out if status is "GOOD" or "BAD"
-- which is used to determine if email is sent, and what is subject of email
EXEC @status = AbcStats @report='short' -- faster to run with "short" report option
if @status = 1 -- (0=all good, 1=at least one "BAD" encountered)
Begin
print 'BAD status, setting email subject'
SET @emailSubject = 'QT PRODUCTION ISSUE: BizTalk Feed Status - CRITICAL - contact BizTalk team '
End
if @status = 1 or @SendEmailOnlyOnError = 0
Begin
SET @BoolSendEmail = 1
End
if @BoolSendEmail = 1
Begin
print 'sending email'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DoNotReply@SomeCompany.com',
@recipients = 'MyPeeps@SomeCompany.com',
@subject = @emailSubject,
@query = 'exec abcStats @report=''full'';',
@append_query_error = 1,
@query_result_separator = ' '
/* SMS not yet working */
/*
TODO Send a short text email that can be forwarded to SMS
*/
End
end
コードを書き直さないようにしています。abcStatsは300行のコードであり、他の有用なアラートが含まれるようになる可能性があります。
abcStatsでHTMLを作成した場合、SMSを実行してもそれほど役に立ちません。結果セットを取得して、jobAbcStatsでHTMLにラップできますか?abcStatsをテーブル関数に書き直した場合、HTMLをjobAbcStatsに入れることができますか?HTML形式は、電子メールに対してのみ実行する必要があります。
私の以前の投稿はやや関連しています: 電話アラートメッセージのSQLクエリをフォーマットするための代替および最良の方法