2010-10-07 3 views
0

Я пытаюсь использовать учетную запись прокси для non sysadmin, чтобы предоставить им разрешение exec на xp_cmdshell. То, что я сделал это:sql server agent proxy account

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'. 

Любой знает, что еще я должен делать? У входа только есть разрешение на подключение к серверу.

заранее спасибо

+0

Почему бы вам не позволить администраторам выполнять xp_cmdshell? –

+0

- его часть задания агента, принадлежащего пользователю. и по соображениям безопасности я не хочу менять владельца задания на sa – Manjot

ответ

0

Вы Шоуда просто использовать

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

вместо этого. Я не уверен на 100%, но я думаю, что xp_cmdshell явно ищет прокси-учетную запись с именем ## xp_cmdshell_proxy_account ## - вот что создаст для вас устаревшая процедура выше.

Смежные вопросы