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

时间:2015-02-13 21:18:01

标签: sql sql-server sql-server-agent

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

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'

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

  

以用户身份执行:NT AUTHORITY \ NETWORK SERVICE。格式错误   查询,可能是无效参数[SQLSTATE 42000](错误22050)。该   步骤失败。

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

1 个答案:

答案 0 :(得分:0)

四处寻找,我找到了大量不同的潜在解决方案,我想我会尝试在这里编译一些。

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