SQL Server 代理子系统

“子系统”是预定义的对象,它表示可用于 SQL Server 代理的代理帐户的一组功能。每个代理都可以访问一个或多个子系统。子系统可以提供安全性,因为它们分隔了对可用于代理的功能的访问。除了 Transact-SQL 作业步骤,每个作业步骤都在代理的上下文中运行。Transact-SQL 作业步骤使用 EXECUTE AS 命令设置安全上下文。

注意注意

从 SQL Server 2000 升级后,升级前存在的所有用户代理帐户都将更改为临时全局代理帐户 UpgradedProxyAccount。UpgradedProxyAccount 只能访问那些显示使用过的子系统,并且升级后不能访问任何子系统。

SQL Server 定义了下表中列出的子系统:

子系统名称

说明

Microsoft ActiveX 脚本

运行 ActiveX 脚本作业步骤。

重要说明重要提示
在未来版本的 Microsoft SQL Server 中,ActiveX 脚本子系统将从 SQL Server 代理中删除。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

操作系统 (CmdExec)

运行可执行程序。

PowerShell

运行 PowerShell 脚本作业步骤。

复制分发服务器

运行激活复制分发服务器代理的作业步骤。

复制合并

运行激活复制合并代理的作业步骤。

复制队列读取器

运行激活复制队列读取器代理的作业步骤。

复制快照

运行激活复制快照代理的作业步骤。

复制事务日志读取器

运行激活复制日志读取器代理的作业步骤。

Analysis Services 命令

运行 Analysis Services 命令。

Analysis Services 查询

运行 Analysis Services 查询。

SSIS 包执行

运行 SSIS 包。

注意注意

因为 Transact-SQL 作业步骤不使用代理,因此没有针对 Transact-SQL 作业步骤的 SQL Server 代理子系统。

即使在正常情况下代理的安全主体具有运行作业步骤中的任务的权限,SQL Server 代理仍将强制限制子系统。例如,如果一个用户是 sysadmin 固定服务器角色的成员,则即使该用户可以运行 SSIS 包,其代理仍将无法运行 SSIS 作业步骤,除非该代理可以访问 SSIS 子系统。