• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クエリのキャンセルがいつになっても終わらない)

クエリのキャンセルが終わらない問題

このQ&Aのポイント
  • SQLServer2005 Workgroupを使用し、500万行ほどのテーブルに対して複数のupdateクエリを実行しましたが、10時間以上経過しても処理が終了しないためキャンセルしました。しかし、キャンセル後も処理が終了せず、新たなクエリの実行も非常に遅くなっています。データを元に戻す必要はないため、強制的に処理を終了する方法はありますか?
  • SQLServer2005 Workgroupで500万行ほどのテーブルに対して複数のupdateクエリを実行しましたが、処理が10時間以上経っても終了しませんでした。キャンセルを試みましたが、キャンセル後も処理が続行され、新たなクエリの実行も非常に重くなってしまいます。データを元に戻す必要はないため、強制的に処理を終了する方法はありますか?
  • SQLServer2005 Workgroupの使用中に、500万行ほどのテーブルに対して複数のupdateクエリを実行しましたが、処理が予想以上に時間がかかります。キャンセルを試みましたが、キャンセル後も処理が継続され、新たなクエリの実行も非常に遅くなってしまいます。どのようにして処理を強制的に終了させることができますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

頑張ってロールバックしているんでしょうね。 Update文が何行あるのかわかりませんが、適宜Commit入れておくことはできなかったんでしょうか? 責任を負えませんが、データのバックアップがきちんと用意できている等 DBが壊れることも厭わないなら、「サービスを停止する」とか。

kikei
質問者

お礼

ご回答ありがとうございます。 あの後、もうどうすることも出来ないので結局1日放置したら処理が終わっていました。 Commitと言う関数を使ったこと無いので調べてみました 「処理を確定する」ということらしいのですが update ~~~ commit と実行すると メッセージ 3902、レベル 16、状態 1、行 2 COMMIT TRANSACTION 要求に対応する BEGIN TRANSACTION がありません。 と言うメッセージが流れてくるのですが これはcommitがちゃんと完了しているのでしょうか? 申し訳ないのですが、調べてもよく分らなかったので よろしければご教授お願いします。

その他の回答 (1)

  • norayuni
  • ベストアンサー率79% (27/34)
回答No.2

1 の回答へのコメントへの回答 メッセージ 3902、レベル 16、状態 1、行 2 COMMIT TRANSACTION 要求に対応する BEGIN TRANSACTION がありません。 書いてある日本語の通りです。 BEGIN TRANSACTION Update テーブル名・・・・ COMMIT って書けばいいのです。 ただ、その前に一度「SQL トランザクション」で勉強されてから、 タスクをこなされた方が良いかと思いますよ? 何の目的で書いたプログラムなのかはわかりませんが、 トランザクション(transaction、commit、roll back)ぐらいは 把握されてからプログラムを書かれた方が幸せになれると思います。

kikei
質問者

お礼

親切な回答ありがとうございます。 勉強不足で申し訳ございませんでした。

関連するQ&A