Microsoft SQL代理作业中的sp_send_dbmail错误

Bra*_*rad 5 sql-server sql-server-2008

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

消息22050,级别16,状态1,行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'
Run Code Online (Sandbox Code Playgroud)

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

任何帮助表示赞赏,谢谢.

Nic*_*Nic 3

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

exec xp_logininfo 'MyDomain\sqlagent'
Run Code Online (Sandbox Code Playgroud)

看看你是否遇到同样的错误。如果这样做,请检查域帐户的安全属性 [在 Active Directory > 属性 > 安全选项卡中右键单击用户] 并为经过身份验证的用户设置读取权限。