Microsoft SQL代理作业中的sp_send_dbmail错误

时间:2012-10-18 19:13:57

标签: sql-server sql-server-2008

我正在尝试使用sp_send_dbmail从计划的SQL代理作业发送电子邮件,并收到以下错误:

Msg 22050,Level 16,State 1,Line 0 格式化查询时出错,可能是无效参数 消息14661,级别16,状态1,过程sp_send_dbmail,行504 查询执行失败:消息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 个答案:

答案 0 :(得分:3)

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

exec xp_logininfo 'MyDomain\sqlagent'

看看你是否得到了同样的错误。如果您这样做,请检查域帐户的安全属性[右键单击Active Directory中的用户>属性> “安全选项卡”并为“已验证用户”设置“读取”权限。

答案 1 :(得分:-1)

这对我有用。

'从YourDatabase.SchemaName.tablename'

中选择列名

我在这里找到了这个答案。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7869b033-80f1-4594-a77e-fb6dce582fb4/error-msg-when-sending-email-using-spsenddbmail?forum=transactsql