SQL Server ロック中のテーブルをselectする | WEBエンジニア社長のブログ

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 ( ビジネスサポートサービス プロバイダー ) 小山内株式会社 代表取締役によって書かれています。




WEBエンジニア社長のタグクラウド

SQL Server    Management    リーダーシップ    Human    スタイルシート    マーケティング    ツイッター
   ASP    IT