xp_cmdshell を使用するとハングするという問題があります。
実行可能ファイルが呼び出され、その作業を実行して終了します。exeのUIプロンプトが原因でハングしていません。exeはまったくハングしていません。タスク マネージャーのプロセス リストから exe が消え、exe からの内部ログによって、メイン関数の最後の行が実行されたことが確認されます。
xp_cmdshell への呼び出しは、SQL で制御を返しません。その行でハングします (バッチの最後の行です)。プロセスを強制終了しても効果がありません。ハングしたプロセスを取り除くには、実際にはSQLサーバーを再起動する必要があります(うーん)
ハングは、最初の実行時にのみ発生します。最初の呼び出しがハングしている限り、同じパラメーターを使用したプロシージャーへの後続の呼び出しは機能し、正常に終了します。SQL が再起動されると、最初の後続の呼び出しが再びハングします。
違いがある場合は、exe から戻り値を取得しようとしています。SQL プロシージャは次のように終了します。
exec @i = xp_cmdshell @cmd; @i を返します。
アクティビティ モニターは、プロセスが PREEMPTIVE_OS_PROCESSOPS (他の開発者が見たもの) または PREEMPTIVE_OS_PIPEOPS (現在のテストで見ているもの) の待機タイプでスタックしていると報告しています。
何か案は?