代码如下:
对于发mail的内容,
先用一张临时表存起来,
然后用FOR XML Path拼接,
只需要自己再拼接一个表头,
数据内容段用XML代替,
就可以组成发mail内容,
比一个栏位一个栏位拼接稍微简化一点发mail流程。
DECLARE @cmd Varchar (1000),@profile_name Varchar(1000) DECLARE @xml NVARCHAR(MAX) DECLARE @body NVARCHAR(MAX) Declare @Disk_Size Table (Drive Nvarchar(Max),Free_Space_MB decimal(30,2)) Insert Into @Disk_Size Exec Xp_fixeddrives --Select * from @Disk_Size SET @xml = CAST(( SELECT DS.Drive As 'td',' ',DS.Free_Space_MB AS 'td' ,' ', convert(varchar(20),getdate(),120) as 'td' from @Disk_Size DS FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX)) SET @body ='<html><body><H3>Current Disk Free Space </H3> <table border = 1> <tr bgcolor=#F0E68C><td>Drive Name</td><td><b>Free_Space_MB<b></td><td>Capture_Date</td></tr>' SET @body = @body + @xml +'</table></body></html>' Set @cmd= @@SERVERNAME + ': Current Disk Free Space' SELECT Top 1 @profile_name=name FROM msdb.dbo.sysmail_profile EXEC msdb.dbo.sp_send_dbmail @profile_name = @profile_name, -- replace with your SQL Database Mail Profile @body = @body, @body_format ='HTML', @recipients = 'kingster@126.com', -- replace with your email address @subject = @cmd