Wie führe ich eine PowerShell-Datei aus einer gespeicherten Prozedur aus?So führen Sie eine PowerShell-Datei aus der gespeicherten Prozedur aus
Ich hatte kein Glück, die PowerShell-Datei innerhalb einer gespeicherten Prozedur auszuführen.
Wenn ich die gespeicherte Prozedur ausführen, bekomme ich Zugriff verweigert Fehler in der Datei. Ich weiß, dass die ps1-Datei selbst gut ist, weil ich sie sowohl in der Befehlszeile als auch als Agent-Job ausführen kann. Ich denke, es geht darum, der gespeicherten Prozedur ausreichende Berechtigungen zu geben.
Früher stellte ich sicher, xp_cmdshell
mit diesem Skript aktivieren
-- 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 tun müssen, um das Powershell-Skript-Datei aus der gespeicherten Prozedur ausführen?
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
Haben Sie darüber nachgedacht, nur den SQLAgent-Job auszuführen, den Sie in der gespeicherten Prozedur erwähnt haben? Ich habe nie versucht, Powershell direkt von einem Proc auszuführen, aber ich habe Agentenjobs innerhalb eines Procs ausgeführt, und es gibt reichlich Beispiele, sowohl hier als auch in der Online-Hilfe, um das zu tun. –
Es ist alles nur deshalb: http://stackoverflow.com/questions/38624228/trigger-stored-procedure-from-view-and-refresh-view-after-stored-procedure-compl. Ein Vorschlag war, dass ich meinen Agent-Job in eine gespeicherte Prozedur umwandelte, damit mein MVC-Controller wissen konnte, wann der Prozess beendet war. –