SQL Server 发mail 一个简单脚本模板

发布时间 2023-04-12 08:49:53作者: kingster

代码如下:

对于发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