MSSQL_20160719_在作业步骤中使用sp_send_dbmail遇到的问题

需求:

在作业步骤中使用sp_send_dbmail发出邮件, 并将数据库中的日志表通过@query参数导出文本作为邮件附件

 

遇到错误:

服务器 DB-DWH-1,第 1 行  服务器主体 "NT AUTHORITY\SYSTEM" 无法在当前安全上下文下访问数据库 "DW"[SQLSTATE 42000] (错误 14661).  该步骤失败。

 

马上查了一下这个安全上下文的资料, 建议打开数据库trustworthy选项

 

到官网查了一下这个参数的资料, 该参数设定是否让实例信任数据库, 官方建议不打开因为防止数据库的恶意组件可以做出不安全的操作. 如下

 

Alter database set trustworthy on

 

https://support.microsoft.com/en-us/kb/2183687

 

由于我们是在自己的数据仓库服务器, 觉得打开也没太大问题, 就打开了试一下, 还是报同样的错误, 证明与给设置无关

开始查看sp_send_dbmail的参数指定好执行语句的数据库, 如下

 

 

 

还找到了一个声称可以让sp_send_dbmail在作业步骤中运行的人的记录

https://www.brentozar.com/archive/2014/10/send-query-results-sql-server-agent-job/

 

 

最终还是在stackoverflow中找到了解决办法, 是执行sp_send_dbmail的运行身份问题, 在执行前加上execute as login = 'sa' 还是指定一个系统管理员用户即可

 http://stackoverflow.com/questions/15112849/sp-send-dbmail-executed-from-job-fails-with-query-result-attached-as-file

 

转载于:https://www.cnblogs.com/jc53/p/5687063.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值