2017-05-02 5 views
0

Erlaubnis verweigert ausführen Erste beim Laufen:xp_subdirs Erlaubnis verweigert

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

von einem Job, der ein Paket nennt und das Paket hat eine einzelne Task SQL ausführen. Ich habe die volle Kontrolle über den Benutzer "Jeder" auf dem Ordner, so dass ich nicht weiß, wo ich sonst noch suchen soll. Das Paket hat eine andere Verbindung als das, in dem das Paket bereitgestellt wird und daher der Auftrag erstellt wurde und die Verbindung die Windows-Authentifizierung verwendet. Auf der Seite "Kontext anzeigen" in SQL Server-Nachrichten ist der Anrufer nicht ich, sondern ein fiktiver Benutzer, aber das sollte nicht von Bedeutung sein, wenn jeder die volle Kontrolle hat.

Der SQL-Code funktioniert einwandfrei in SQL Server Management Studio, wenn ich mich mit der Windows-Authentifizierung am Server anmelde und funktioniert, wenn im Kontext von Visual Studio ausgeführt - also nehme ich an, dass es in beiden Fällen als ich läuft.

Wenn ich das Paket ausführen bekomme ich den Fehler:

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

Wenn ich das Paket über den Job laufen erhalte ich:

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

Antwort

0

Der fiktive Benutzer benötigt, um eine SQL Server haben Rolle der Systemadministrator Zumindest funktioniert das. Ich muss mit anderen Berechtigungen experimentieren, um zu sehen, welche minimale Berechtigungsstufe ich brauche.

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

+1

Ihr ‚fiktiv‘ Benutzer ist eigentlich ein Dienstkonto Benutzer - sollten Sie einige Schritte machen dies besser zu verstehen, wenn Sie SQL-Agenten regelmäßig werden. Es empfiehlt sich, einen ordnungsgemäßen Dienstkontobenutzer einzurichten, anstatt NT AUTHORITY \ ANONYMOUS weiterhin zu verwenden. Ich kann keinen guten Link finden, der das erklärt, aber vielleicht lese ich: https://www.sswug.org/basitaalishanmasood-al-farooq/sql-server/understanding-the-purpose-of-sql-server- Agent-Teil-1/https://www.simple-talk.com/sql/database-administration/setting-up-your-sql-server-agent-correctly/ –