创建 SQL Server 代理的代理帐户

更新日期: 2006 年 4 月 14 日

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

ms189064.note(zh-cn,SQL.90).gif注意:
从 Microsoft SQL Server 2000 升级到 Microsoft SQL Server 2005 后,升级前存在的所有用户代理帐户都将变为临时全局代理帐户 UpgradedProxyAccountUpgradedProxyAccount 只能访问那些显示使用过的子系统,并且升级后不能访问任何子系统。

关于 SQL Server 代理的代理帐户

ms189064.note(zh-cn,SQL.90).gif注意:
执行 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 数据库中的角色

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

ms189064.note(zh-cn,SQL.90).gif注意:
sysadmin 固定服务器角色的成员具有访问实例中所有代理帐户的权限。

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

创建代理

修改代理

删除代理

设置用户权限

请参阅

任务

如何创建凭据 (SQL Server Management Studio)

概念

SQL Server 代理子系统

其他资源

CREATE CREDENTIAL (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

更改的内容:
  • 删除了说明以下限制的“使用 Windows 本地用户帐户运行 SQL Server 代理服务时使用代理帐户”部分:
    如果 SQL Server Agent 服务在本地用户帐户下运行,而 SQL Server 服务在另一个帐户下运行,则使用代理的作业将失败。
    此问题已在 SQL Server 2005 Service Pack 1 中得到修正。

2005 年 12 月 5 日

新增内容:
  • 添加了“使用 Windows 本地用户帐户运行 SQL Server 代理服务时使用代理帐户”部分。