常に実行する必要があるストアド プロシージャがあります。時折、現時点では不明な理由で停止します。これが発生した場合、SP を自動的に再起動するにはどうすればよいですか? すべての結果は、ストアド プロシージャではなく、サーバーの再起動に関するものであるため、Google 検索はあまり役に立ちません。ご協力いただきありがとうございます。
それが違いを生むなら、それはSQLCLRストアドプロシージャです。
常に実行する必要があるストアド プロシージャがあります。時折、現時点では不明な理由で停止します。これが発生した場合、SP を自動的に再起動するにはどうすればよいですか? すべての結果は、ストアド プロシージャではなく、サーバーの再起動に関するものであるため、Google 検索はあまり役に立ちません。ご協力いただきありがとうございます。
それが違いを生むなら、それはSQLCLRストアドプロシージャです。
自動的に再起動することはできません。このような機能は、実際にはプロシージャーの目的ではないため、組み込まれていません。
N 秒 (N = 1 または 15 程度) ごとに 1 回実行され、必要に応じて手順を再開するSQL Server エージェント ジョブを設定します。
まだ実行されているかどうかを検出する方法が必要です。これは、sproc に特別なマーカー テーブルの排他ロックを保持させることで実現できます。チェック手順は、そのテーブルから読み取ることができますWITH (READPAST)
。行が返されない場合、sproc はまだロックを保持しているため、アクティブである必要があります。
あなたがルーブゴールドバーグマシンを持っている限り、それをもっと楽しくするかもしれません。
procを次のように書き直します。
ここで、ストアドプロシージャをキューのアクティブ化ストアドプロシージャにし、max_queue_readers = 1に設定すると、レースに参加できます。
最初の sp が実行されているかどうかを確認し、実行されていない場合は開始する別の sp を作成します。好奇心は私を不自由にしていますが、これは何をしますか?