执行Job Step需要特定的安全上下文,设置Job Step执行的权限,主要分两种:第一种是使用Proxy,第二种是使用Step Owner或Agent 服务账户的权限。除了执行TSQL Script的Step之外,对于其他类型的Step都需要Proxy的权限上下文来执行。
一,使用Proxy来执行Job Step
同故宫Proxy的权限上下文来执行Job Step,请阅读《凭证和代理》
二,执行TSQL 脚本
当Job Step的类型是Transact-SQL Script时,不使用Proxy来执行。该类型的Step用于执行TSQL脚本,访问的资源都是在SQL Server实例内部,因此,不需要使用Agent Proxy,Job Step的执行还是需要在特定的安全上下文中,它是以SQL Server Agent 服务账户或Job Owner的权限上下文执行TSQL脚本。
当Job Step的类型是TSQL脚本时,Job Step是在什么安全上下文中?这取决于Job Owner。
如果Job的Owner是sysadmin角色的成员,那么Step以SQL Server Agent的服务账户来执行;否则,以Job Owner的权限上下文来执行。
但是,如果Job Owner是sysadmin角色的成员,也可以模拟其他用户的权限,指定其他用户的方式有两种:
第一种方式:在TSQL 脚本中,使用 EXECUTE AS USER='XXX' 来模拟用户的权限
第二种方式:在Step的Advanced 属性中,设置 Run as user 属性来模拟用户的权限
如果你是sysadmin角色的成员,你可以使用通过设置Run as user来以不同的SQL login来执行job step.
参考文档:
Manage Job Steps