SQL Server ロック中のテーブルをselectする
このアメブロではどのキーワードで検索して訪れてきたかがわかるようになっている。
意外だったのがSQL ServerとASPに関するキーワードが結構多いこと。
ということで、要望に応えて、私のSQL Serverもちネタから1つ。
テーブルの更新中は排他ロックがかかっているためデフォルトではSELECTできない。
SELECTするにもテーブルをロック(共有ロック)しなければならないため、排他ロックが終了するのを待つことになってしまう。
だが、一切ロックしなければ、排他ロック中であってもデータを参照できる。
それがこの方法
select * from table_name with(nolock)
大量なデータ更新を行うと、時として1時間以上かかってしまう場合がある。そんな時はただ待つしかないのだが、「本当にちゃんとやってくれているのかな?」と心配になるものだ。
だが、with(nolock) オプションを使えば、テーブルをSELECTできるので、WHERE句に条件をつけてデータをカウントすることもできる。
select count(*) from table_name with(nolock) where status='close'
これでとりあえずは安心できるというものである。
※このブログは、BSP ( ビジネスサポートサービス プロバイダー ) 小山内株式会社 代表取締役によって書かれています。