楼主: snoxmk

[讨论] SQLserver怎么将SQL结果保存为EXCEL并自动以邮件形式发送出来?

[复制链接]
论坛徽章:
10
2010新春纪念徽章
日期:2010-03-01 11:06:22ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09itpub13周年纪念徽章
日期:2014-09-28 10:55:55懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
41#
发表于 2014-7-16 13:42 | 只看该作者
Herogao 发表于 2014-7-15 21:53
exec msdb..sp_send_dbmail
@profile_name = 'sqlmail1', --就是在步骤2中的配置文件名。
--调用发送邮件 ...

再试试看。
  1. exec msdb..sp_send_dbmail
  2. @profile_name = 'sqlmail1', --就是在步骤2中的配置文件名。
  3. --调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
  4. @recipients = '@abccom.cn',--用来接受邮件的地址
  5. @subject = 'test',
  6. @append_query_error = 1,
  7. --@attach_query_result_as_file = 1,
  8. --@query_attachment_filename = 'a.txt',
  9. @body = '@tableHTML',
  10. @body_format = 'html',
  11. @query = '
  12. DECLARE @tableHTML  NVARCHAR(MAX) ;
  13. set  @tableHTML=
  14. N'<H1>Work Report</H1>' +
  15. N'<table border="1">' +
  16. N'<tr><th>MTL CATGRY</th><th>MTL EN</th>' +
  17. cast((select td=cast(a.MTL_CATGRY as varchar),'',td=cast(a.MTL_DESC_EN as varchar)
  18. from FSDBMR.dbo.v_MtlCat a for xml path('tr'),type)as nvarchar(MAX))+
  19. N'</table>';
复制代码

使用道具 举报

回复
论坛徽章:
0
42#
发表于 2014-7-16 14:00 | 只看该作者
谢谢您的指点。我按一下执行了,成功了。
DECLARE @tableHTML  NVARCHAR(MAX) ;
SET @tableHTML =
    N'<H1>Hi adc,</H1>' +
N'<H2>I sent follow data today. Pls check and process it.</H2>'
+
    N'<table border="1">' +
      N'<tr><th>Invoice Number</th><th>Invoice Qty</th>' +
    N'<th>Invoice Amt</th></tr>' +
    CAST ( ( SELECT     td=InvoiceNumber, '',td=cast(invoice_Qty as NVARCHAR(MAX)),'', td=cast(invocie_Amt as NVARCHAR(MAX))
FROM         FSDBMR.dbo.V_PL_Sum2
              FOR XML PATH('tr'), TYPE
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;
exec msdb..sp_send_dbmail
@profile_name = 'sqlmail1', --就是在步骤2中的配置文件名。
--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
@recipients = '123@abc',--接收邮件地址
@copy_recipients = '5759177@qq.com',--用抄送邮件的地址
--@blind_copy_recipients = '4627@qq.com',--暗抄邮件地址
@subject = 'SN List',
@append_query_error = 1,
--@attach_query_result_as_file = 1,
--@query_attachment_filename = 'a.txt',
@body = @tableHTML,
@body_format = 'html'

我想抄送多个E-mail 地址如何实现呢?谢谢!

使用道具 举报

回复
论坛徽章:
0
43#
发表于 2014-7-16 14:02 | 只看该作者

@copy_recipients = '5759177@qq.com','assd@cc.com',--用来抄送多个邮件地址

系统提示:

Must pass parameter number 4 and subsequent parameters as '@name = value'. After the form '@name = value' has been used, all subsequent parameters must be passed in the form '@name = value'.

使用道具 举报

回复
论坛徽章:
10
2010新春纪念徽章
日期:2010-03-01 11:06:22ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09itpub13周年纪念徽章
日期:2014-09-28 10:55:55懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
44#
发表于 2014-7-16 14:16 | 只看该作者
Herogao 发表于 2014-7-16 14:02
@copy_recipients = '5759177@qq.com','assd@cc.com',--用来抄送多个邮件地址

系统提示:

用分号隔开即可。
  1. @copy_recipients = '5759177@qq.com;assd@cc.com',
复制代码
下次记得点击“回复”后写内容,否则你直接写问题,别人很容易看漏的。

使用道具 举报

回复
论坛徽章:
0
45#
发表于 2014-7-16 14:25 | 只看该作者
问题解决了,感谢您的指点。

我下次会注意的。


使用道具 举报

回复
论坛徽章:
10
2010新春纪念徽章
日期:2010-03-01 11:06:22ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09itpub13周年纪念徽章
日期:2014-09-28 10:55:55懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
46#
发表于 2014-7-16 14:58 | 只看该作者
Herogao 发表于 2014-7-16 14:25
问题解决了,感谢您的指点。

我下次会注意的。

不客气

使用道具 举报

回复
论坛徽章:
0
47#
发表于 2014-7-16 15:09 | 只看该作者
学习学习

使用道具 举报

回复
论坛徽章:
0
48#
发表于 2014-7-16 16:46 | 只看该作者
Herogao 发表于 2014-7-16 14:00
谢谢您的指点。我按一下执行了,成功了。
DECLARE @tableHTML  NVARCHAR(MAX) ;
SET @tableHTML =

我在sql 2008 R2 运行了此代码:

系统提示:

Msg 14607, Level 16, State 1, Procedure sysmail_verify_profile_sp, Line 42
profile name is not valid

这个提示说我的权限不够吗?

使用道具 举报

回复
论坛徽章:
0
49#
发表于 2014-7-16 17:39 | 只看该作者
Herogao 发表于 2014-7-16 16:46
我在sql 2008 R2 运行了此代码:

系统提示:

我打开SQL Server Confirmation Manager,发现有个“The remote procedure call failed. [0x800706be]”  会不会是这个抱错引起的?

使用道具 举报

回复
论坛徽章:
10
2010新春纪念徽章
日期:2010-03-01 11:06:22ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09itpub13周年纪念徽章
日期:2014-09-28 10:55:55懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
50#
发表于 2014-7-17 08:18 | 只看该作者
Herogao 发表于 2014-7-16 17:39
我打开SQL Server Confirmation Manager,发现有个“The remote procedure call failed. [0x800706be]”  ...

你确定你sql2008r2上的发邮件的设定都配置好了吗?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表