Gar*_*eth 15 xml sql-server stored-procedures database-mail
我的任务是为我的一位客户发送一份小型月度报告。该报告以前在实例上手动运行,输出复制到电子表格并作为附件发送给客户。
我正在寻找一个更永久的解决方案,所以我打算使用 sp_send_dbmail存储过程来运行查询并将其作为附件发送。
一切正常,但消息的格式。最初我尝试将输出附加为带有 a 的 CSV 文件,@query_result_seperator = ','但结果无处不在!
当我正常运行报告时,输出在 SQL 中看起来不错。但是将其作为 CSV 发送或仅在消息正文中发送则不然。
我认为如果我将输出导出为 HTML 并作为附件/或 XML 发送它可能会更好,但我不知道如何执行此操作。
有没有人有什么建议?
提前致谢!
Mar*_*son 12
如果您仍然需要导出文件并将其作为附件发送,这也可以在 SQL Server 中完全自动化。
可以通过BCP实现导出为 CSV 。这个答案中有更多细节,但主要思想是:
bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" queryout "D:\MyTable.csv" -c -t , -S SERVERNAME -T
Run Code Online (Sandbox Code Playgroud)
然后,您可以将该文件附加到电子邮件中sp_send_dbmail。
USE msdb;
GO
EXEC sp_send_dbmail
@recipients='mark@mark.com',
@subject='Client Report',
@body='Please find your latest report attached',
@file_attachments='D:\MyTable.csv';
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以将多个文件附加到一封电子邮件中。
是的,您可以通过 HTML 格式发送报告,例如 MS 中列出的:
场景:本示例使用电子邮件地址 danw@Adventure-Works.com 向 Dan Wilson 发送电子邮件。该邮件的主题为“工单列表”,并包含一个 HTML 文档,该文档显示了截止日期在 2004 年 4 月 30 日之后不到两天的工单。数据库邮件以 HTML 格式发送邮件。
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>Work Order Report</H1>' +
N'<table border="1">' +
N'<tr><th>Work Order ID</th><th>Product ID</th>' +
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
N'<th>Expected Revenue</th></tr>' +
CAST ( ( SELECT td = wo.WorkOrderID, '',
td = p.ProductID, '',
td = p.Name, '',
td = wo.OrderQty, '',
td = wo.DueDate, '',
td = (p.ListPrice - p.StandardCost) * wo.OrderQty
FROM AdventureWorks2008R2.Production.WorkOrder as wo
JOIN AdventureWorks2008R2.Production.Product AS p
ON wo.ProductID = p.ProductID
WHERE DueDate > '2006-04-30'
AND DATEDIFF(dd, '2006-04-30', DueDate) < 2
ORDER BY DueDate ASC,
(p.ListPrice - p.StandardCost) * wo.OrderQty DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',
@subject = 'Work Order List',
@body = @tableHTML,
@body_format = 'HTML' ;
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用SSIS 脚本任务在 SQL Server 中使用读取发送 HTML 格式的电子邮件
此外,如果您想安排 HTML 报告,请在此处阅读
| 归档时间: |
|
| 查看次数: |
74102 次 |
| 最近记录: |