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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem mit
bcp.exe
in einer batch-Datei läuft auf einem SQL Server 2008 R2-Maschine: die Angabe von Benutzer/Kennwort mit-U -P
wurde wieder "NativeError = 18456" (Anmeldung fehlgeschlagen) und ich beschloss, dass ich es mit "trusted connection" mit dem parameter-T
.BCP.EXE
- Aufruf MIT FEHLER 18456 wurde:BCP.EXE
ARBEITEN-Aufruf:Habe ich gefunden, dass das Jahr 2008 ist nicht das gleiche wie 2012. In 2008 habe ich nicht brauchen, um geben Sie den Namen des Servers. In 2008 war ich auch in der Lage, einen Laufwerkbuchstaben verwenden, der mit D$, aber jetzt ich brauchte, um ein Freigegebenes Laufwerk Namen. Die folgenden Werke in 2012.
--Erstellen der CSV-Datei Bericht mit allen Daten. Die @variable-Anweisung muss benutzt werden, um die Verwendung von Variablen in der Prozedur xp_cmdshell Befehl.