查询结果
拥有电子邮件发送能力的数据库引擎的一个重要特征是它可以让你向发送过程传递一个查询。在SQL Mail和Database Mail中都有该特性。Database Mail中的一个新特性是可以将查询结果作为附件,这一点在下面的脚本中展示。假如你不将查询结果作为一文件,那么它将被放置在邮件正文中。见列表B。
EXEC msdb.dbo.sp_send_dbmail
@recipients=N'chapman.tim@gmail.com',
@body='Message Body',
@subject ='Message Subject',
@profile_name ='DatabaseMailProfile',
@query ='SELECT Product FROM sb2..SalesHistory GROUP BY Product HAVING COUNT(*) > 3',
@attach_query_result_as_file = 1,
@query_attachment_filename ='Results.txt'
HTML格式的信件
在数据库邮件中我最喜爱的新特征是可以将你的邮件格式化为HTML格式。简单看来,这没什么大不了的,但是这确实带来一些很好的可能性。在前面的例子中,你发送的查询结果包含在邮件正文中,因为该例子只包含一列数据,所以看起来没有什么不方便的。
但是,当在查询结果集中包含多个域时,格式化变得每况愈下。一个好消息是,可以很简单的使用SQL Server 2005中的一些XML和HTML新特征来格式化你的查询结果集,因此,可以很轻易的在信件中查看查询结果。列表C中的脚本演示了如何利用查询结果发送一封XML/HTML格式的电子邮件。
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
SET @xml =CAST(( SELECT Product AS 'td','',SUM(SalePrice) AS 'td'
FROM SalesHistory GROUP BY Product FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
SET @body ='<html><H1>Sales Reports</H1><body bgcolor=yellow><table border = 2><tr><th>Product</th><th>SaleAmount</th></tr>'
SET @body = @body @xml '</table></body></html>'
EXEC msdb.dbo.sp_send_dbmail
@recipients =N'chapman.tim@gmail.com',
@body = @body,
@body_format ='HTML',
@subject ='Message Subject',
@profile_name ='DatabaseMailProfile'
当你发送HTML格式的邮件时,答应你将查询结果嵌入到邮件的查询部分,从而可以将查询结果格式化成为更轻易看的形式。(虽然,你可能会争论说我在信件中使用的黄色背景,看起来并不是很舒适。)
可能性
当你能够从数据库引擎发送电子邮件时,这就引起了很多可能性。加上一些额外的逻辑和构建,你就可以编写一个国产邮件系统,这样就可以确保你总能找到想要找的人。在我的关于数据库邮件系列三中,我将介绍如何书写这样一个应用。
评论加载中…
![]() |