2017-05-02 6 views
0

Obtenir l'autorisation d'exécution refusée lors de l'exécution:xp_subdirs permission refusée

DECLARE @RootPath VARCHAR(1000) = '\\SomeUNCPath\SubFolder\' 
... 
EXEC master.sys.xp_subdirs @RootPath 

d'un emploi qui appelle un paquet et le paquet a une seule tâche Exécuter SQL. J'ai mis le contrôle total de l'utilisateur "tout le monde" sur le dossier, donc je ne sais pas où regarder. Le package a une connexion différente à l'endroit où le package est déployé et, par conséquent, où le travail a été créé et la connexion utilise l'authentification Windows. Dans la page "Afficher le contexte" des messages SQL Server, l'appelant n'est pas moi mais plutôt un utilisateur fictif, mais cela ne devrait pas avoir d'importance si tout le monde a le contrôle total. Le code SQL fonctionne correctement dans SQL Server Management Studio si je me connecte au serveur à l'aide de l'authentification Windows et fonctionne correctement s'il est exécuté dans le contexte de Visual Studio. Je suppose donc qu'il s'exécute dans les deux cas.

Quand je lance le paquet je reçois l'erreur:

'Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Quand je lance le paquet par le travail que je reçois:

"The EXECUTE permission was denied on the object 'xp_subdirs', database 'mysqlsystemresource', schema 'sys'." Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly."

Répondre

0

L'utilisateur fictif nécessaire d'avoir un rôle SQL Server de sysadmin. Eh bien au moins cela fonctionne. Je vais devoir expérimenter avec d'autres permissions pour voir quel est le niveau d'autorisation minimal dont j'ai besoin.

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/295174f9-30e8-4925-a9e5-49d073dbf3ab/executing-xpsubdirs-as-nonsysadmin?forum=sqlsecurity

+1

Votre nom d'utilisateur « fictif » est en fait un utilisateur de compte de service - vous devriez faire quelques pas pour mieux comprendre cela si vous allez régulièrement en utilisant un agent SQL. Il est préférable de configurer un utilisateur de compte de service approprié plutôt que de continuer à utiliser NT AUTHORITY \ ANONYMOUS. Je ne peux pas trouver un bon lien expliquant cela, mais peut-être avoir une lecture de ceux-ci: https://www.sswug.org/basitaalishanmasood-al-farooq/sql-server/understanding-the-purpose-of-sql-server- agent-part-1/https://www.simple-talk.com/sql/database-administration/setting-up-your-sql-server-agent-correctly/ –