SQL 2012 bcp-Aufruf gibt SQLState = 28000. NativeError = 18456-Login fehlgeschlagen für Benutzer

Arbeite ich mit einer SQL-gespeicherte Prozedur, die einen Aufruf von xp_cmdshell. xp_cmdshell aktiviert wurde, und eine proxy-Konto auf 'vpexporter'. Diese sproc wurde entwickelt, um zu schreiben, eine Daten-Datei auf der Festplatte.

Diese sproc gearbeitet hatte, wenn er sich auf eine SQL-2005-server. Die Umgebung hat ein Upgrade auf SQL 2012 und die sproc nicht mehr läuft. Die Zeile, die den Aufruf ist:

set @sql1 = 'bcp "SELECT * FROM dbo.udPayrollOutput" queryout "D:\Repository\Exports\' + @fileunique  -Uvpexporter -Ppassword -c -t,' 
exec master..xp_cmdshell @sql1

Laufen diese in SSMS gibt mir die folgende:

SQLState = 28000. NativeError = 18456 Fehler = [Microsoft][SQL Server
Native Client 11.0][SQL Server]Login failed for user 'vpexporter'.

Ich habe versucht, dies mit einer SQL-login und mit einem Domänen-Konto. Beide geben die gleiche Fehlermeldung. Die 'vpexporter' Hinzugefügt wurde, als die Anmeldung und die wurde einrichten als Benutzer der master-db mit execute-Berechtigungen für die Prozedur xp_cmdshell.

Fühle ich etwas muss sich verändert haben, wie xp_cmdshell Aufruf mit SQL-version 2012, aber ich habe nicht nichts gefunden beim googlen, dass.

Ich habe versucht mit "exec xp_cmdshell 'whoami.exe'" die Rückkehr "nt authority\network service', das ist das Konto, das SQL Server ausgeführt wird.

Mein Verständnis war, dass durch die Angabe einer Kommando-shell proxy-Konto, mit 'sp_xp_cmdshell_proxy_account' wäre es stattdessen verwenden. Ich will nicht zu gewähren, der die Prozedur xp_cmdshell ausführen, Zugriff auf das Netzwerk-Service.


Habe ich einige Fortschritte gemacht, aber bin noch immer stecken. Der ursprüngliche Fehler wurde durch die neue Umgebung erfordert die Angabe der SQL-Instanz durch hinzufügen von "-S ServerName\Instanzname" auf meine Anfrage Linie. Bekomme ich jetzt die Fehlermeldung:

Kann nicht gestartet werden 'cvADPTaxCreditExp' gespeicherte Prozedur.
Die EXECUTE-Berechtigung verweigert wurde, auf das Objekt 'xp_cmdshell', Datenbank 'mssqlsystemresource', schema "sys".

Habe ich erteilt die Execute-Berechtigung für xp_cmdshell in master proxy-Konto, bin aber noch immer diese Fehlermeldung.

exec sp_xp_cmdshell_proxy_account 'NEWMECHDOM\vpexporter', 'password';
GRANT EXECUTE ON xp_cmdshell TO [NEWMECHDOM\vpexporter];

Ich haben überprüft, dass es mit diesem:

select  * from  sys.credentials

Ist es woanders-Sicherheit " gesetzt werden muss?

  • Ausführung xp_cmdshell 'whoami.exe'; nicht, dass zurückzugeben, was Sie erwarten würde?
  • Ich habe versucht mit "exec xp_cmdshell 'whoami.exe'" die Rückkehr "nt authority\network service', das ist das Konto, das SQL Server ausgeführt wird. Mein Verständnis war, dass durch die Angabe einer Kommando-shell proxy-Konto, mit 'sp_xp_cmdshell_proxy_account' wäre es stattdessen verwenden. Ich will nicht zu gewähren, der die Prozedur xp_cmdshell ausführen, Zugriff auf das Netzwerk-Service.
  • Es sollte, soweit ich weiß, werden mit dem proxy-Konto, wenn Sie es eingerichtet haben, korrekt (und wenn man hat genügend Rechte). EXEC sp_xp_cmdshell_proxy_account 'DOMAIN\user','password'. Wenn das laufen durch ein sysadmin-Konto, xp_cmdshell wird das Dienstkonto verwendet wird, um zu laichen Kind-Prozesse jedoch.
InformationsquelleAutor user2015032 | 2015-04-13
Schreibe einen Kommentar