0

データ フロー タスクが失敗したときに、SSIS で Excel.exe プロセスを強制終了するにはどうすればよいですか? 完全に有効な他のパッケージから実行されている Excel.exe の複数のインスタンスが存在する可能性があるため、それらを強制終了するすべてのインスタンスをループしたくありません。

私の問題は、データ フロー タスク中に、シートの名前が間違っているか、列が欠落しているために、プロセスが失敗することがあるということです。これにより、excel.exe のインスタンスが実行されたままになり、リソースを消費する孤立したタスクになっているため、強制終了する必要があります。

同時に、独自の excel.exe プロセスにアクセスしている他の SSIS パッケージが実行されており、問題はありません。

では、他のExcel.exeプロセスに影響を与えずに、孤立したexcel.exeプロセスを強制終了するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

その場合、sysprocessesからホストマシンのprocessIDを取得し、taskkillを実行してプロセスを削除する必要があります。TSQLでは次のようになります。

DECLARE @cmd VARCHAR(50)
SELECT @cmd = 'taskkill /pid ' + 
    CAST(hostprocess AS VARCHAR(10)) 
FROM sys.sysprocesses 
WHERE program_name = 'Microsoft® Excel'
AND status = 'sleeping'

xp_CmdShell (@cmd);

Excelプロセスが生成されたらすぐにSPIDを取得できれば、それを保存して上記のコマンドにプラグインするだけでよいでしょう。役に立つかもしれない他のいくつかのオプションがあるので、 taskkill関数を読んでください。

于 2012-05-10T18:01:33.690 に答える