0

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クエリをフォーマットするための代替および最良の方法

4

1 に答える 1

1

abcStatssprocに@RenderFormatパラメーターを作成できます。次に、abcStatsを作り直して(おそらく書き直す必要はありません)、@RenderFormatが渡された内容に基づいて結果を微調整できます。

このように、abcStatsは、SSMSから呼び出すときに必要最低限​​のSQL結果を吐き出すことができ、sp_send_dbmailの一部として使用するときに結果をHTMLでラップすることができます。

于 2012-08-23T20:03:12.110 に答える