SQL 服务器代理电子邮件:格式化查询时出错

SQL Server Agent Emails: Error Formatting Query

我 运行 在创建和实施新的 SQL 服务器代理作业到 运行 并将简单查询的结果通过电子邮件发送时遇到了一个问题:

EXEC ms.dbo.sp_send_dbmail
@profile_name = 'Main DB Mail Profile',
@recipients = 'test@myemail.com',
@subject = 'Basket Report',
@query = N'Select Store, Date, Sum(Amount) as DailyTotal, COUNT(CAST(Trans as varchar(30))+CAST(Register as Varchar(30))) as DistinctTransactions
From BasketAnalysis
Where Date = dateadd(day,datediff(day,1,GETDATE()),0)
GROUP BY Store, Date
ORDER BY Store ASC;',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'BasketReport.txt'

我一直运行在任务的历史日志中记录了一条神秘的错误消息。

Executed as user: NT AUTHORITY\NETWORK SERVICE. Error formatting query, probably invalid parameters [SQLSTATE 42000] (Error 22050). The step failed.

有没有人幸运地获得有关这些错误的更多信息以及如何解决它们?

四处挖掘,我发现了大量不同的潜在解决方案,我想我会尝试在这里编译其中的一些。

  1. 用户权限:SQL服务器代理用户需要有足够的权限才能执行和发送电子邮件。用户需要具有 DatabaseMailUserRole(在 msdb 用户映射下)服务器角色。 SQL 配置管理器使您能够在必要时查看和调整 Server Agent 用户,尝试使用 Server Agent 独占用户会很有帮助!
  2. 运行 新查询中的查询 window:虽然这很愚蠢,但我一开始完全忽略了 运行 作业本身之外的查询。我意识到了这一点,这给了我一些比服务器代理历史记录中记录的更多的错误信息。
  3. 检查您的电子邮件参数:这是我的问题,但我正在关注 this tutorial 但出现此错误是因为我忽略了在查询中包含“@execute_query_database”参数。添加,指向我的相关数据库,是缺失的部分。