.net column

.NET開発者のためのブログメディア

SQL Serverでロックを確認する方法

 
SQL Serverでロックを確認する方法

データベースからデータを取得する場合は特に考慮は不要ですが、更新や新規登録、削除などを行う場合、「ロック」処理は考慮しないといけない要素です。ロックされているテーブルに対しては処理を行うことができません。ここではSQL Serverを利用して、テーブルのロックを確認する方法を紹介します。

SE
ロックって更新や登録、削除処理を行う場合は考慮しないといけない要素ですよね。SQL Serverだとロックを確認することって簡単にできるのですか?
PL
ロックを確認することは簡単にできますよ。Transact-SQLをコーディングして確認する必要がありますので、コーディングの組み方などをここで確認していきましょう。

SQL Serverでのロックについて

ロックの種類はいくつか存在します。すべての種類を網羅する必要はありませんが、ここではよく利用されるロックの種類だけでもまずは確認するとしましょう。

■ロックの種類

SQL Serverのロック ロック名称 ロック内容
X 排他ロック 他のトランザクションからの読み込みと更新が両方とも不可となります。
INSERT/UPDATE/DELETE処理を行う場合、このロック処理が該当します。
S 共有ロック 他のトランザクションからの読み込みは可能ですが、更新が不可となります。
U 更新ロック WITH( UPDLOCK )を指定して行うロック処理です。
読み込みは可能ですが、更新は不可となります。

SQL Serverでのロックの確認方法について

Transact-SQLを利用して、SQL Serverでのロックを確認する方法を紹介します。参考にしてください。

Transact-SQLでロックを確認する方法1

sys.dm_tran_locksにロック情報が格納されています。これだけでも確認はできますが、不要な情報も多く含まれているため、確認しづらいと思われます。そのため、以下の方法で検索することをおすすめします。利用されているSSMSにコピー&ペーストで利用してください。

Transact-SQLでロックを確認する方法2

Transact-SQLで強制的にテーブルにロックをかける

実行結果
ロックの実行結果

SE
ロック処理はとても大事ですよね。これを怠るとデータベースの整合性が失われて、ユーザーからの信頼も損なってしまいますので、更新系のプログラムを担当する場合は意識してコーディングを行います。
PL
良い心がけですね!更新の際にロック処理を実施することを仕様書に明記しているなんて少ないと思います。そこは開発者自身が、ロックが必要なのかそうでないかを考えて行動するようにしましょう。

ロックの確認方法は覚えておきましょう

ロックを取得して更新する方法は分かっていても、確認する方法まで知らない開発者は多いのではないでしょうか。もちろん両方できるに越したことはないので、この機会に確認する方法も覚えておくことをおすすめします。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags