2010-10-07 4 views
0

J'essaie d'utiliser le compte proxy pour non sysadmin pour leur accorder l'autorisation exec sur xp_cmdshell. Ce que je fait est:compte proxy d'agent serveur sql

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 

Mais encore lorsque l'utilisateur essaie de faire

xp_cmdshell 'dir c:' 

Il donne l'erreur suivante:

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

Tout le monde sait ce que dois-je faire? Le login n'a que l'autorisation de connexion au serveur.

merci à l'avance

+0

Pourquoi voudriez-vous autoriser les non-administrateurs à exécuter xp_cmdshell? –

+0

sa partie d'un travail d'agent appartenant à l'utilisateur. et pour des raisons de sécurité, je ne veux pas changer de propriétaire d'emploi à sa – Manjot

Répondre

0

Vous utilisez simplement qui devraient

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

à la place. Je ne suis pas sûr à 100% mais je pense que xp_cmdshell recherche explicitement un compte proxy appelé ## xp_cmdshell_proxy_account ## - c'est ce que la procédure ci-dessus va créer pour vous.