2016-12-14 9 views
0

私はSQL環境でデータベースを調べ、結果を電子メールアドレスに送信します。問題は電子メールの本文に何も表示されていないことです。私は、ディスクスペースの使用状況を取得するには、次のクエリを使用しています:SQL Serverレポート電子メールで電子メールの本文に何も表示されない

create table #DriveSpaceLeft (Drive varchar(10), 
            [MB Free] bigint) 

insert #DriveSpaceLeft (Drive, [MB Free]) 
    EXEC master.dbo.xp_fixeddrives; 

create table DrivesWithIssue (Drive varchar(10), 
           [MB Free] bigint) 

insert into DrivesWithIssue 
    select Drive, [MB Free] from #DriveSpaceLeft 
    where [MB Free] < 1000 

drop table #DriveSpaceLeft 

declare @cnt int 
select @cnt=COUNT(1) from DrivesWithIssue 
if (@cnt > 0) 
begin 

    declare @strsubject varchar(100) 
    select @strsubject='Check drive space on ' + @@SERVERNAME 

    declare @tableHTML nvarchar(max); 
    set @tableHTML = 
     N'<H1>Drives with less that 1GB Free - ' + @@SERVERNAME + '</H1>' + 
     N'<table border="1">' + 
     N'<tr><th>Drive</th>' + 
     N'<th>MB Free</th></tr>' + 
     CAST ((SELECT td = [Drive], '', 
         td = [MB Free] 
        FROM DrivesWithIssue 
        FOR XML PATH('tr'), TYPE 
     ) AS NVARCHAR(MAX)) + 
     N'</table>' ; 

    EXEC msdb.dbo.sp_send_dbmail 
    @from_address='[email protected]', 
    @recipients='[email protected]', 
    @subject = @strsubject, 
    @body = @tableHTML, 
    @body_format = 'HTML' , 
    @profile_name='test profile' 
end 

drop table DrivesWithIssue 

そして、このステップは、電子メールを送信する:

declare @strsubject varchar(100) 
select @strsubject='SQL check completed on ' + @@SERVERNAME 

EXEC msdb.dbo.sp_send_dbmail 
@from_address='[email protected]', 
@recipients='[email protected]', 
@subject = @strsubject, 
@body_format = 'HTML', 
@profile_name='test' 
+0

は可能かもしれません前に、これら2つのパラメータを宣言することを忘れないでください必要がありますので、私はあなただけであることを、あなたは一部<html><body>、テール部分を「」見出しを追加するのを忘れて推測していますあなたの変数 '@ body'を渡すための行方不明? – Shnugo

+0

Btw:[この回答](http://stackoverflow.com/a/39487565/5089204)は、あなたのステートメントから直接 'html'テーブルを作成するための、完全に包括的なアプローチを示しています...文字列連結によるXMLまたはHTMLはいつも - ああ - 醜い(少なくともかなり誤りがある)... – Shnugo

答えて

0

あなたが電子メールを取得することができれば、それはあなたに問題がないことを意味しますデータベースの電子メール設定。電子メールの本文に何も表示されない場合は、htmlコードの問題がある可能性が非常に高いです。あなたのHTMLが尾@ @heading + @tableHTML +になり、

関連する問題