アカウント更新の一部として一連のストアド プロシージャを呼び出すストアド プロシージャがあります。残念ながら、10 分の制限 (SQL サーバー、外部タイムアウトとは関係ありません) があり、タイムアウトを超える場合があります。(適切な条件下では、1 時間かかることもあります。)
私はさまざまな解決策を試しました。コードは、ほぼ最適化されています。1 つの解決策は、最初のストアド プロシージャで「実際の」ストアド プロシージャを呼び出すことです。タイムアウトは最初のプロセスのみを認識しているため、実際のプロセスは妨げられずに続行できます。問題は、SQL-Server がプロシージャをネストしていることです... プロシージャ A は、呼び出されたプロシージャ (プロシージャ B、C、および D) が終了するまで終了しません。
SQL-Server の内部メッセージングは機能しますが、DB には互換性がありません。(私の手に負えません。) 最初の proc に 1 回限りのジョブ (1 分後に実行するため) をセットアップさせ、ジョブ スケジューラにそれを実行させることを考えましたが、私が追加した場合、DBA はおそらく満足しないでしょう。常にジョブを削除します。
ストアド プロシージャが別のストアド プロシージャを実行し、呼び出されたプロシージャの実行中にすぐに終了する方法はありますか?