当前位置:Gxlcms > 数据库问题 > 第十篇 SQL Server代理使用代理帐户

第十篇 SQL Server代理使用代理帐户

时间:2021-07-01 10:21:17 帮助过:6人阅读

sp_add_proxy [ @proxy_name = ] proxy_name , [ @enabled = ] is_enabled , [ @description = ] description , [ @credential_name = ] credential_name , [ @credential_id = ] credential_id , [ @proxy_id = ] id OUTPUT

保留proxy_name空白,保证代理与凭据相同的名字。凭据名称应该来自安全凭据(使用CREATE CREDENTIAL数据库定义语句创建)。
例如,创建一个[Proxy1]代理帐户,密码“Password1”(即一个帐户在你的本地SQL Server机器创建),你可以运行code1中的代码,替换成你的环境中有效的域、身份和密码。

USE MSDB;
GO
CREATE CREDENTIAL [Cred1] WITH IDENTITY = NUSER-67NP5R8LGK\ClearFile, SECRET = N123456

Declare @rc int=0;
EXEC sp_add_proxy [Proxy1],1,This is an example proxy account,[Cred1], NULL,@rc;

值得注意的是,目前你已经创建一个代理帐户,但它不与任何特定的子系统关联。如果你展开代理->未分配的代理,你会看到刚刚创建的代理帐户,如图10.2所示。技术分享
请注意,这里使用SSMS创建更容易,但仍然有两步过程。你必须先创建一个凭据(安全性->凭据,新建凭据,打开新建凭据对话框)。在这个例子中,使用rw2008r2\proxygui作为账号,用相同的密码,如图10.3所示。

技术分享
单击“确定”,然后导航到代理文件夹,并右键单击任何代理子系统(或代理文件夹本身),新建代理。弹出新建代理帐户,键入rw2008r2\proxygui名称,选择相匹配的凭据,输入一个描述,如果需要选择一个作业子系统(如图10.4所示)。如果没有选择子系统,代理帐户将出现在未分配的代理下(类似用语句创建的代理)。

技术分享
最后一步是将代理帐户和子系统关联,它是通过系统存储过程sp_grant_proxy_to_subsystem实现的。在前面的例子,为了将代理帐户[rw2008r2\ProxyDemo]分配给PowerShell子系统,你可以运行下面代码:

EXEC sp_grant_proxy_to_subsystem @proxy_name=Nrw2008r2\ProxyDemo, @subsystem_id=12

子系统的subsystem_id可以在MSDN文档查到http://msdn.microsoft.com/en-us/library/ms186760.aspx
授权代理凭据
你可能已经注意到,在新建代理帐户对话框有一个主体页签。默认情况下,sysadmin服务器角色的成员有代理资格,但这不适用于其他人。如果你想有一个非管理员用户访问代理凭据(这是很有可能的,否则为什么要创造它们),那么你需要授予明确的访问给每一个你想使用代理的登录。
你可以使用系统存储过程sp_grant_login_to_proxy 来实现,或者SSMS。打开PowerShell代理文件夹下的rw2008r2\ProxyDemo代理帐户,转到主体页签。点击添加(如图10.5),你就可以关联一个或多个安全主体(登录)和你的代理帐户。一旦这样操作后,任何主体拥有的作业可以使用这个代理帐户。注意还有第三个页签,引用,这里会显示出哪个作业步骤使用了这个代理帐户,你可以直接修改或删除代理。

技术分享
使用代理帐户
现在就可以修改作业步骤来使用代理帐户。如果你是遵循本系列的文章,你应该有一个叫做ShellOut的作业,它的第二步s2是PowerShell子系统。打开这个作业步骤,更改运行身份为ProxyDemo凭据(如图10.6所示)。如果你没有这个作业步骤,你应该创建一个这样的步骤。技术分享
现在再次运行作业,这样就是使用代理帐户而不是SQL Server服务帐户来执行作业步骤的。记住你的代理帐户必须能登录到你的数据库实例,因此确保你已经为代理帐户创建了一个数据库登录名。
修改和删除代理
使用SSMS来修改或删除代理是直观的(打开代理帐户对话框更改),但为了完整对应的Transact-SQL语句是:exec msdb.dbo.sp_delete_proxy @proxy_name = ‘proxy1‘
http://www.cnblogs.com/stswordman/archive/2008/10/06/1302684.html
下一篇
SQL Server代理的代理帐户允许非sysadmin用户模拟其他Windows安全凭据有权利和特权执行关键任务的能力。当结合子系统如CmdExec和PowerShell,他们允许比sysadmin低特权级被授予SQL代理作业的所有者。
在我们的下一篇,我们将看看维修计划作业,以及他们与你自己创建的作业的区别。

第十篇 SQL Server代理使用代理帐户

标签:

人气教程排行