创建 SQL Server 代理的代理帐户

SQL Server 代理的代理帐户定义作业步骤的安全上下文。代理帐户向 SQL Server 代理提供访问 Microsoft Windows 用户安全凭据的权限。每个代理帐户都可以与一个或多个子系统相关联。使用代理帐户的作业步骤可以通过使用 Windows 用户的安全上下文来访问指定子系统。SQL Server 代理运行使用代理帐户的作业步骤之前,SQL Server 代理将模拟代理帐户中定义的凭据,然后使用该安全上下文来运行作业步骤。

注意注意

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

关于 SQL Server 代理的代理帐户

注意注意

执行 Transact-SQL 的作业步骤不使用 SQL Server 代理的代理帐户。Transact-SQL 作业步骤在作业所有者的安全上下文中运行。若要为 Transact-SQL 作业步骤设置安全上下文,请在 sp_add_jobstep 存储过程中使用 database_user_name 参数。有关详细信息,请参阅 sp_add_jobstep (Transact-SQL)

SQL Server 代理的代理帐户使用凭据存储 Windows 用户帐户的相关信息。凭据中指定的用户必须对正在运行 SQL Server 的计算机具有“以批处理作业登录”权限。

SQL Server 代理检查代理帐户的子系统访问权限,并在每次运行作业步骤时向代理帐户授予访问权限。如果代理对子系统不再具有访问权限,则作业步骤将失败。否则,SQL Server 代理将模拟代理帐户中指定的用户并运行作业步骤。

创建代理帐户不会更改凭据中指定的用户对代理帐户具有的权限。例如,您可以为不具有连接到 SQL Server 实例的权限的用户创建代理帐户。在这种情况下,使用该代理帐户的作业步骤无法连接到 SQL Server。

用户必须具有访问某个代理帐户的权限,才能在作业步骤中使用该代理帐户。可以向下列三种安全主体授予访问权限:

  • SQL Server 登录帐户

  • 服务器角色

  • msdb 数据库中的角色

如果用户的登录帐户具有访问代理帐户的权限,或者用户属于具有访问代理帐户的权限的任何角色,则用户可以在作业步骤中使用代理帐户。

注意注意

sysadmin 固定服务器角色的成员具有访问实例中所有代理帐户的权限。

以下部分提供了指向使用代理帐户的常见任务的链接。