Ful*_*oof 10 sql-server maintenance permissions sql-server-agent maintenance-plans
我想知道 SQL Server 代理作业的所有者的可能用途是什么?
删除,并将其留空,作业仍然成功
Gre*_*ker 17
作业所有者确定作业步骤的执行上下文。
对于 T-SQL 作业步骤:如果作业所有者是系统管理员,则该步骤将作为 SQL Server 代理服务帐户或指定的数据库用户(在“作业步骤属性”对话框的“高级”页面上设置)执行。如果作业所有者不是系统管理员,则该步骤将作为作业所有者执行。
对于其他作业步骤:如果作业所有者是系统管理员,则该步骤将作为 SQL Server 代理服务帐户或指定的代理执行。如果作业所有者不是系统管理员,则该步骤将作为指定的代理执行(这要求作业所有者具有使用代理的权限)。
SQL 代理代理是基于 SQL Server 凭据创建的,该凭据存储与某些外部安全主体关联的机密。例如,系统管理员 Kim 为 ADVENTUREWORKS\Bob 创建一个凭据,然后基于该凭据创建一个代理。她为 CmdExec 子系统激活代理。她授予(非系统管理员)Qin 使用该代理的权限。Qin 现在可以创建作为 ADVERNTUREWORKS\Bob 执行的 CmdExec 作业步骤。
请参阅联机丛书中的实施 SQL Server 代理安全。
(编辑:虽然此答案已被接受并且有效,但请确保您阅读@Greenstone-Walker的另一个答案,因为它提供了很好的信息)
正如Billinkc 所指出的,作业只能由其所有者或 sysadmin 角色的成员进行编辑。正如Shawn Melton 所指出的,从工作中删除所有者只是确保您的登录名将成为所有者。您可以通过查看 msdb 数据库中的系统存储过程来了解这一点: exec msdb.dbo.sp_help_job @job_name = 'somejob';
联机丛书有一篇关于 SQL Server 代理作业安全性的文章,标题为“授予其他人作业的所有权”,它很好地描述了该过程。