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'
は可能かもしれません前に、これら2つのパラメータを宣言することを忘れないでください必要がありますので、私はあなただけであることを、あなたは一部
<html><body>
、テール部分を「」見出しを追加するのを忘れて推測していますあなたの変数 '@ body'を渡すための行方不明? – ShnugoBtw:[この回答](http://stackoverflow.com/a/39487565/5089204)は、あなたのステートメントから直接 'html'テーブルを作成するための、完全に包括的なアプローチを示しています...文字列連結によるXMLまたはHTMLはいつも - ああ - 醜い(少なくともかなり誤りがある)... – Shnugo