通过SQL Agent运行作业需要什么权限?

时间:2018-04-09 20:34:49

标签: sql-server tsql permissions sql-agent-job

我整个周末都在搜索我的问题,但似乎无法解决问题

所以基本上,我有一个查询,当我在查询窗口中手动运行它时,它工作正常,我的工作执行,导致发送电子邮件。但是,当我设置计划时,我收到以下错误:

enter image description here

如果您无法阅读,则会显示错误消息

“作业失败。作业由附表9调用。最后一步是第1步。”

然后在它下面说,

“作为用户'adminName(而不是sa)执行'。无法初始化sqlcmd库,错误号为-2147467259(SQLSTATE 42000)(错误22050)。步骤失败”

所以我使用用户sa登录,显然这个用户需要在msdb数据库中拥有SQL代理权限。根据此屏幕截图,sa是所有者:

enter image description here

因为sa是所有者,这意味着它具有所有与SQL Agent相关的权限,对吧?此外,我正在使用的代码从CompanyDB执行,所以我想也许这可能是问题所在。如果我查看属性,在sa下,我会看到这个窗口:

enter image description here

因此,对于用户sa,取消选中CompanyDB,因此为了允许sa在SQL Agent中查询CompanyDB,它需要什么权限?我假设这是问题,但我不确定,我似乎无法弄明白,任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

作业应具有dbAdmin权限。话虽这么说,这取决于你是否写入数据库,更新,或只是发送电子邮件。

更好的选择是创建一个Web服务,并在您想要发送电子邮件时调用它。