Wie zum ausführen einer PowerShell-Datei, die von der gespeicherten Prozedur
Wie führe ich ein PowerShell-Datei aus innerhalb einer gespeicherten Prozedur?
Habe ich kein Glück gehabt Ausführung der PowerShell-Datei aus einer gespeicherten Prozedur.
exec xp_cmdshell 'powershell ""E:\PowershellScripts\todayErrorLog.ps1""'
Wenn ich die gespeicherte Prozedur auszuführen, bekomme ich Zugriff verweigert Fehler auf die Datei. Ich kenne die ps1-Datei selbst ist gut, da kann ich es ausführen auf der Kommandozeile und als Agent-Auftrag. So dass ich vermute, es ist eine Frage des geben die gespeicherte Prozedur ausreichende Berechtigungen.
Zuvor, machte ich sicher, dass xp_cmdshell
mit diesem script
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO
Was muss ich sonst noch tun, um führen Sie die PowerShell-Skript-Datei, die von der gespeicherten Prozedur?
Dies ist die gespeicherte Prozedur:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[RefreshErrorQuery]
-- No parameters
AS
BEGIN
SET NOCOUNT ON;
-- Step 1
exec xp_cmdshell 'powershell ""E:\PowershellScripts\todayErrorLog.ps1""'
-- Step 2: TODO: Run SSIS package
END
Es ist alles wegen dieses: stackoverflow.com/questions/38624228/.... Ein Vorschlag war, dass ich meine konvertieren-Agent-Auftrag in eine gespeicherte Prozedur, so mein MVC-controller konnte wissen, Wann der Prozess fertig war.
InformationsquelleAutor | 2016-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, da das Konto, das der agent verwendet, verfügt nicht über ausreichende Berechtigungen um auf die Datei zuzugreifen.
Überprüfung:
(1) Sie können laufen PS von der Befehlszeile aus
(2) Sie können nicht führen Sie das Skript aus xp_cmdshell
(3) Ändern Sie den Ordner, der die Datei enthält, um die vollständige Kontrolle Jeder
(4) führen Sie das Skript via xp_cmdshell
Alternativ für einen test, können Sie ändern Sie die Anmeldung an den SQL-Agent ausgeführt wird, um Ihre Anmeldeinformationen. Dann wird der agent ausgeführt wird, als "Sie", das gleiche, als wenn Sie ausgeführt werden, auf die Befehlszeile.
Ist der agent in der Lage zu laufen als geplanter Auftrag (im Gegensatz zum laufen interaktiv via SMS)? Läuft der job interaktiv per SMS verwendet Ihre Anmeldeinformationen im Gegensatz zu den agent Anmeldeinformationen.
Ich kann laufen, als geplanter job-das zugrunde liegende Problem ist, dass ich möchte in der Lage sein, die Verwendung eines MVC-controller-Methode zum auslösen eines Agent-Auftrag ausgeführt, auf Abruf und die Ansicht aktualisieren, sobald die Arbeit erledigt ist. Ich habe gesagt, dass ich brauchen, um eine gespeicherte Prozedur auszuführen, anstatt einen job, und die gespeicherte Prozedur wird der Auftrag asynchron und nicht informieren Sie mich, wenn es fertig ist.
InformationsquelleAutor Jeff L