учетная запись прокси-сервера агента sql - PullRequest
0 голосов
/ 07 октября 2010

Я пытаюсь использовать учетную запись прокси для не sysadmin, чтобы предоставить им разрешение exec на xp_cmdshell. Что я сделал, это:

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 голосов
/ 08 февраля 2012

Вы просто должны использовать

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

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

...