ストアドプロシージャ内からPowerShellファイルを実行するにはどうすればよいですか?ストアドプロシージャからPowerShellファイルを実行する方法
私はストアドプロシージャ内からPowerShellファイルを実行することはありませんでした。
exec xp_cmdshell 'powershell ""E:\PowershellScripts\todayErrorLog.ps1""'
ストアドプロシージャを実行すると、ファイルに対するアクセスが拒否されます。私は、コマンドラインとエージェントジョブの両方で実行できるので、ps1ファイル自体が良いことを知っています。だから私は、ストアドプロシージャに十分な権限を与えることが重要だと考えています。
以前、私はこのスクリプト私は、ストアドプロシージャからPowerShellスクリプトファイルを実行するために何をする必要があります他に何
-- 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
でxp_cmdshell
を有効にしてください作ったのですか?
これはストアドプロシージャです:
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
あなたはストアドプロシージャ内から言及したSQLAgentジョブの実行だけと考えましたか?私はprocから直接powershellを実行しようとしたことはありませんが、proc内からエージェントジョブを実行しており、ここでは両方の例があります。 –
これはすべてこのためです:http://stackoverflow.com/questions/38624228/trigger-stored-procedure-from-view-and-refresh-view-after-stored-procedure-compl。私のエージェントジョブをストアドプロシージャに変換して、MVCコントローラがプロセスがいつ終了したかを知ることができるようにすることを提案しました。 –