0

私は新しい「偶発的な」DBA であり、現在、フロント エンド アプリケーションをサポートする本番データベースで作成したトリガーによって引き起こされたロックアップを解決しようとしています。

トリガーを作成しましたが、代わりにジョブを作成して作業を行うのが最善であると判断したため、オブジェクトエクスプローラーでトリガーを削除しようとしました。削除は次のメッセージで失敗しました:

An exception occurred while executing a Transact-SQL statement or batch. 

Lock request time out period exceeded. 

その後、手動でドロップしようとしましたが、残り 0% で失敗しました。最も長く実行されているトランザクションを確認してから、アクティビティ モニターでプロセスを強制終了しようとしました。それ以来、プロセスは「Task State:RUNNING and Command:KILLED/ROLLBACK」でスタックしています。いくつかのグーグルの後、2つのオプションがあるように思えます。

オプション 1: SQL サーバーで DTC を再起動します.... 機能せず、スタックしました。オプション 2: SQL サービスを再起動します。ええとああ。

このようなことをしなければならなかったのはこれが初めてで、オフィスで SQL 担当者が 1 人しかいないことにかなり緊張しています。データの損失とフロント エンド ユーザーへの影響に関して、サービスを再起動することの潜在的な影響を誰か教えてください。営業時間後の再起動を待ったほうがよいですか?

ありがとう、そして私がこの質問をひどくした場合はお詫び申し上げます。すべてについて初めてです。

乾杯

4

1 に答える 1

0

待って。ロールバック中であり、ロールバックを終了する必要があります。SQL を再起動しないでください。再起動後もロールバックが続行され、データベースがオフラインになる可能性があります。

これが本番システムであり、データベースをバウンスした場合、ユーザー インターフェイスのすべてのユーザーは奇妙で素晴らしいエラーを受け取ります。アプリケーションがそれを処理できない場合、ユーザーは不快な体験をし、上司から電話がかかってくるようになります....

補足として、locking\blocking プロセスを確認してください。「Lock request time out period exceeded.」という質問のメッセージは、ロック/ブロッキングが発生していることを示唆しているようです。

于 2015-07-02T15:20:05.600 に答える