sp_send_dbmail在Microsoft SQL Agent作业中出现错误

5
我正在尝试使用sp_send_dbmail从定时SQL Agent作业发送电子邮件,并收到以下错误:
Msg 22050,级别16,状态1,行0 格式化查询时出错,可能是无效的参数。 Msg 14661,级别16,状态1,过程sp_send_dbmail,行504 查询执行失败:Msg 15404,级别16,状态19,服务器MyServer,行1 无法获取有关Windows NT组/用户'MyDomain\sqlagent'的信息,错误代码为0x5。
以下是作业步骤中的代码:
DECLARE @SQL NVARCHAR(400)
SELECT @SQL = 'SELECT COUNT(staff_id) FROM Staff'

EXEC msdb.dbo.sp_send_dbmail
@recipients = 'me@myemail.com',
@subject = 'Email Alert',
@body = 'Test',
@query = @SQL,
@execute_query_database = 'MyDB'

SQL代理正在以域帐户 [MyDomain\sqlagent] 运行。我在MyDB数据库中授予了该用户db_owner权限,并将其添加为msdb中DatabaseMailUserRole的成员。但是,仍然没有运气。如果我删除@query和@execute_query_database参数,它将发送一个“测试”电子邮件。但是,我需要附加查询结果。

感谢任何帮助。

2个回答

3

我曾经遇到过一些AD方面的奇怪错误。我建议您检查正在运行此操作的帐户在AD中的属性是否可读取。最快的方法是运行

exec xp_logininfo 'MyDomain\sqlagent'

并查看是否出现相同的错误。如果是,请检查域帐户的安全属性 [在Active Directory中右键单击用户>属性>安全选项卡] 并为“已验证的用户”设置读取权限。


Nic,感谢你提供的信息。我运行了你推荐的查询,并收到了与之前相同的消息。我按照你的建议设置了AD权限[它之前没有],之后一切都很顺利。SQL代理作业成功运行并成功发送了电子邮件。 - Brad
很高兴那对你有用。最近我也遇到了这个问题好几次。 - Nic
这同样解决了我的问题,而其他回答却没有(即使在其他类似的SO问题中也是如此)。 - Lews Therin

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接