5

我正在尝试使用 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'

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

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

4

2 回答 2

3

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

exec xp_logininfo 'MyDomain\sqlagent'

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

于 2012-10-18T20:22:52.013 回答
-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

于 2016-03-04T15:58:27.527 回答