sql server代理帐户

时间:2010-10-07 01:41:20

标签: sql-server-2005 tsql proxy

我正在尝试使用非sysadmin的代理帐户授予他们对xp_cmdshell的exec权限。 我做的是:

USE [master]
GO
CREATE CREDENTIAL [proxyaccount] WITH IDENTITY = N'domain\user', SECRET = N'password'
GO
USE [master]
GO
CREATE CREDENTIAL [proxyaccount] WITH IDENTITY = N'domain\user', SECRET = N'password'
GO

USE [msdb]
GO
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'myproxy',@credential_name=N'proxyaccount',
                @enabled=1
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'myproxy', @subsystem_id=2  
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'myproxy', @subsystem_id=3
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'myproxy', @subsystem_id=11
GO

但是当用户尝试

时仍然如此
xp_cmdshell 'dir c:'

它出现以下错误:

Msg 229, Level 14, State 5, Procedure xp_cmdshell, Line 1
The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.

任何人都知道我还应该做什么?登录只对服务器具有连接权限。

提前致谢

1 个答案:

答案 0 :(得分:0)

你只需使用

EXEC sp_xp_cmdshell_proxy_account 'domain\user', 'password';

代替。我不是100%肯定,但我认为xp_cmdshell显式查找名为## xp_cmdshell_proxy_account ##的代理帐户 - 这就是上面的激励程序将为您创建的。