こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLServerのロック?について

お世話になっております。
早速ですが、質問させていただきます。

ASP+SQLServer2000で社内システムの作成などを行っております。
ASP上から社員がデータを打ち込んでいるシステムがあるのですが、同時にSELECT、UPDATE、INSERT、DELETEを一つのテーブルで行っております。
その際、SELECTとUPDATE、INSERT、DELETEの処理がかぶると画面が固まったように処理が長くなります。
自分でわかる限りの原因としては検索レコードは10万件くらいからやっているのですが、SELECTで検索中にINSER、UPDATE、DELETE処理がくるとウエイト状態になり、異常に時間がかかってしまい、タイムアウトしてしまっています。
INSERTやUPDATEが処理かぶっても特に処理はとまらないのですが、先にSELECT処理していてINSERTやUPDATE処理がくるとまったく動かなくなってしまうのです。

こちらの原因とか少しでもわかる方いらっしゃれば、お知恵をお貸しください。

投稿日時 - 2009-02-04 23:20:50

QNo.4690064

すぐに回答ほしいです

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

現在使われているSelect文を以下のように変更して下さい。
SELECT * FROM [テーブル名] WITH (UPDLOCK,NOWAIT)

WITH句を書くことにより更新クエリを防ぐことができます。
詳しくは「更新ロック SQL Server」で検索下さい。

投稿日時 - 2009-02-08 19:03:51

お礼

大変遅くなり申し訳ありません。

お教えいただいたとおり、WITH句をつけることにより、この問題は回避できました。
ありがとうございました。

投稿日時 - 2009-02-17 02:05:33

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

リンクをご参考までに。
ブロッキングの回避は具体的なクエリなしにはコメントしづらいものです。

参考URL:http://technet.microsoft.com/ja-jp/library/aa178087(SQL.80).aspx

投稿日時 - 2009-02-05 03:57:56

お礼

大変遅くなり申し訳ありません。
ブロッキングに関して今回勉強させていただきました。

なお上でご回答いただいています、WITH句で問題回避できました。
ありがとうございました。

投稿日時 - 2009-02-17 02:04:27

あなたにオススメの質問