我在 SQL Server Agent 中安排了一项作业,该作业会通过电子邮件发送查询结果。如果我从 SSMS 执行存储过程,它会正常工作。但 SQL Server Agent 无法发送电子邮件。
这是我收到的错误。
以下帐户在 SQL Server 配置管理器中被安排为 SQL Server 代理的所有者:NT AUTHORITY\NETWORK SERVICE。
我该怎么做才能为该用户分配权限?
信息
以用户身份执行:NT AUTHORITY\NETWORK SERVICE。格式化查询时出错,可能是参数无效 [SQLSTATE 42000](错误 22050)。步骤失败。
答案1
您还可以尝试授予访问xp_sysmail_format_query
权限NT AUTHORITY\NETWORK SERVICE
:
USE master
--Create user in master if necessary
CREATE USER [nt authority\system] FOR LOGIN [nt authority\system]
GO
--Grant execute to the stored procedure that's failing
GRANT EXECUTE ON [xp_sysmail_format_query] TO [NT AUTHORITY\NETWORK SERVICE]
GO
不过,最好的办法是在对网络资源具有适当访问权限的域用户上下文中运行 SQL Agent 服务。这样做比使用本地帐户更具可移植性。