作业不是作为代理运行,而是作为引擎帐户运行

Mat*_*att 1 sql-server permissions sql-server-2008-r2 jobs

我最近创建了一个新的 SQL Server 环境,我正在尝试尽可能使用最佳实践,尤其是最低特权的方法。我们环境中的其他服务器只有使用域​​管理员权限和 SA 权限的组合运行的作业,这“简单”且可怕。

除此之外,我有使用域帐户运行的数据库引擎DOMAIN\sqlengine和使用DOMAIN\sqlagent.

我有一个简单的维护计划,可以将服务器上的所有数据库完整备份到远程 UNC 路径。我曾假设/计划代理帐户 ( DOMAIN\sqlagent) 将执行计划的作业。作业因操作系统驱动的拒绝访问错误而失败。所以我DOMAIN\sqlagent在目录中添加了帐户修改权限,以便它可以执行备份。令我惊讶的是它又失败了。当我检查目标服务器的安全日志时,我看到这DOMAIN\sqlengine是帐户身份验证。该帐户没有获得 UNC 路径的权限。为什么引擎帐户而不是代理帐户运行作业?

如果我查看我DOMAIN\sqlagent为该维护计划中的所有作业设置的作业所有者。在作业步骤下,它被设置为作为“SQL Server 代理服务帐户”运行。

我做错了什么或不理解?

Han*_*non 5

SQL Server 本身正在执行备份;因此该DOMAIN\sqlengine帐户需要访问共享。

SQL Server 代理只是开始工作。

这与使用 T-SQLBACKUP DATABASE [xyz] TO ...命令启动备份完全相同。SQL Server 仍需要访问目标路径。您仍然可以锁定目标路径,并且应该这样做,以防止对存储在备份文件中的数据进行未经授权的访问。

此外,我建议使用Ola Hallengren 的脚本,而不是使用维护计划来执行维护;它们非常出色,得到了很好的支持,并且被广泛使用。