0

常に実行する必要があるストアド プロシージャがあります。時折、現時点では不明な理由で停止します。これが発生した場合、SP を自動的に再起動するにはどうすればよいですか? すべての結果は、ストアド プロシージャではなく、サーバーの再起動に関するものであるため、Google 検索はあまり役に立ちません。ご協力いただきありがとうございます。

それが違いを生むなら、それはSQLCLRストアドプロシージャです。

4

3 に答える 3

1

自動的に再起動することはできません。このような機能は、実際にはプロシージャーの目的ではないため、組み込まれていません。

N 秒 (N = 1 または 15 程度) ごとに 1 回実行され、必要に応じて手順を再開するSQL Server エージェント ジョブを設定します。

まだ実行されているかどうかを検出する方法が必要です。これは、sproc に特別なマーカー テーブルの排他ロックを保持させることで実現できます。チェック手順は、そのテーブルから読み取ることができますWITH (READPAST)。行が返されない場合、sproc はまだロックを保持しているため、アクティブである必要があります。

于 2012-06-27T22:09:18.310 に答える
0

あなたがルーブゴールドバーグマシンを持っている限り、それをもっと楽しくするかもしれません。

procを次のように書き直します。

  1. サービスブローカーキューからメッセージをポップします。「なぜ」は後で明らかになります。
  2. メッセージをサービスブローカーキューに入れます。それが何であるかは関係ありません。
  3. procが今行うことは何でも。

ここで、ストアドプロシージャをキューのアクティブ化ストアドプロシージャにし、max_queue_readers = 1に設定すると、レースに参加できます。

于 2012-06-28T02:24:35.870 に答える
0

最初の sp が実行されているかどうかを確認し、実行されていない場合は開始する別の sp を作成します。好奇心は私を不自由にしていますが、これは何をしますか?

于 2012-06-27T22:04:36.970 に答える