2009-07-26 8 views
0

Ich versuche, einen Bash-Befehl über ein Benutzerkonto mit PsExec aufrufen. Cygwin wird verwendet, und ich versuche, einen Befehl von SQL auszuführen:Bash von PsExec aus SQL mit xp_cmdshell aufrufen

exec master..xp_cmdshell 'psexec -u cyg_server -p <pwd> -accepteula "bash script.sh"'; 

Allerdings bekomme ich die folgende Fehlermeldung aus psexec:

Zugriff verweigert.

Irgendwelche Vorschläge:

PsExec konnte nicht bash script.sh starten?

ich verwende SQL 2005, Windows Server 2008 und Cygwin mit frischen Binärdateien

+0

Haben Sie die entsprechenden db-Berechtigungen für den Zugriff auf die Befehlsshell in SQL Server? –

+0

Ja, ich erhalte etwas Ausgabe von PsExec, bevor es fehlschlägt. Derselbe Befehl funktioniert von cmd.exe. Hier sind die Ergebnisse aus versuchen Notizblock aus SQL „PsExec v1.96 laufen - Prozesse ausführen remote Copyright (C) 2001-2009 Mark Russinovich Sysinternals -. Www.sysinternals.com NULL Zugriff verweigert PsExec konnte nicht Start Notepad: " – ccook

Antwort

1

Du bist wahrscheinlich diese als SQL-Benutzer oder einen Benutzer ohne Berechtigungen für diese Datei ausgeführt wird. Meine beste Wette ist ein SQL-Benutzer (wie sa). Wenn Sie das tun, sind die Windows-Anmeldeinformationen, die es verwendet, des Dienstkontos, das standardmäßig SYSTEM ist, aber es könnte etwas anderes sein, wenn Sie es so festlegen.

Wenn Sie dies nur von SQL aus aufrufen, stellen Sie sicher, dass Sie tatsächlich als Windows-Benutzer ausgeführt werden, der über die Berechtigung zum Öffnen aller erforderlichen Dateien verfügt.

Wenn dies in einem SQL Server-Agent-Job ausgeführt wird, müssen Sie set up a Credential und dann set up a Proxy. Sobald Sie das getan haben, können Sie den Proxy zuweisen, um den Job auszuführen (es ist die dritte oder vierte Dropdown-Liste im Dialogfeld Job-Schritt), und er wird mit den richtigen Windows-Anmeldedaten ausgeführt.

+0

Danke Eric, ich werde das versuchen. Das Skript lief tatsächlich als System. – ccook