创建 SQL Server 代理
适用于:SQL Server
本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建 SQL Server 代理代理。
SQL Server 代理帐户定义了作业步骤运行的安全上下文。 每个代理对应于安全凭据。 若要为特定作业步骤设置权限,请创建具有 SQL Server 代理子系统所需权限的代理,然后将该代理分配给作业步骤。
Azure SQL 托管实例,目前大多数但并非所有 SQL Server 代理功能都受支持。 有关详细信息,请参阅 Azure SQL 托管实例 T-SQL 与 SQL Server 的差异 或 SQL 托管实例中的 SQL 代理作业限制 。
局限性
创建代理之前,必须先创建凭据(如果尚未存在)。
SQL Server 代理使用凭据来存储有关 Windows 用户帐户的信息。 凭据中指定的用户必须在运行 SQL Server 的计算机上具有“从网络访问此计算机”权限(SeNetworkLogonRight
)。
SQL Server 代理检查代理的子系统访问权限,并在每次运行作业步骤时授予对代理的访问权限。 如果代理不再有权访问子系统,则作业步骤将失败。 否则,SQL Server 代理将模拟在代理中指定的用户并运行作业步骤。 有关代理子系统的列表,请参阅 sp_grant_proxy_to_subsystem。
创建代理不会更改在代理凭据中指定的用户的权限。 例如,可以为无权连接到 SQL Server 实例的用户创建代理。 在这种情况下,使用该代理的作业步骤无法连接到 SQL Server。
如果用户的登录名有权访问代理,或者用户属于有权访问代理的任何角色,则用户可以在作业步骤中使用代理。
权限
只有 sysadmin 固定服务器角色的成员有权创建、修改或删除代理帐户。 不属于 sysadmin 固定服务器角色的用户必须添加到 msdb
数据库中以下 SQL Server 代理固定数据库角色之一,才能使用代理:SQLAgentUserRole、SQLAgentReaderRole或 SQLAgentOperatorRole。
如果除了代理之外还要创建凭证,则需要 ALTER ANY CREDENTIAL
权限。
使用 SQL Server Management Studio (SSMS)
在 对象资源管理器中,选择加号以展开要在 SQL Server 代理上创建代理的服务器。
选择加号以展开 SQL Server 代理。
右键单击 代理 文件夹,然后选择“新建代理”。
在“”新建代理帐户“ 对话框中的”常规“页上,在 代理名称 框中输入代理帐户的名称。
在 凭据名称 框中,输入代理帐户将使用的安全凭据的名称。
在 描述 框中,输入代理帐户的描述
在 “活动”下的以下子系统下,为此代理选择适当的子系统或子系统。
在 主体 页上,添加或删除登录名或角色,以授予或删除对代理帐户的访问权限。
完成后,选择“确定”。
使用 Transact-SQL
以下脚本创建名为 CatalogApplicationCredential
的凭据,创建代理 Catalog application proxy
并向其分配凭据 CatalogApplicationCredential
,并向代理授予对 ActiveX 脚本子系统的访问权限。
创建凭据
CatalogApplicationCredential
。USE msdb; GO CREATE CREDENTIAL CatalogApplicationCredential WITH IDENTITY = 'REDMOND/TestUser', SECRET = 'G3$1o)lkJ8HNd!'; GO
创建代理
Catalog application proxy
并向其分配凭据CatalogApplicationCredential
。EXECUTE dbo.sp_add_proxy @proxy_name = 'Catalog application proxy', @enabled = 1, @description = 'Maintenance tasks on catalog application.', @credential_name = 'CatalogApplicationCredential'; GO
授予代理
Catalog application proxy
对 ActiveX 脚本子系统的访问权限。EXECUTE dbo.sp_grant_proxy_to_subsystem @proxy_name = N'Catalog application proxy', @subsystem_id = 2; GO