2013-04-23 80 views
2

我對SQL很陌生。我正在使用SQL Server 2008 R2。我有以下問題;有沒有辦法檢查事務授予的鎖

(1)

事務已啓動,但尚未達到其提交點。

UPDATE Student 
SET subject = 'Technology' 
WHERE subjectCode = 'tech'; 

當該正在執行什麼類型的鎖定的由具有全表/行?

(2)

是否有一種方式來獲得由事務持有的鎖?

+0

參見http://dba.stackexchange.com/q/12810/5203。 – GSerg 2013-04-23 20:20:04

回答

2

答案(1):

如果交易沒有被阻止任何預先存在的鎖,然後在Student表中的所有行與subjectCode = 'tech'現在對他們有(X)(獨家)鎖。

在頁面和表級別上,將會有(IX)(intent exclusive)鎖定 - 表明在「層次結構」(表格 - >頁面 - >行)的更下方的某處存在排它鎖。

如果您要更新超過5000行,然後鎖升級將被踢入,並且SQL Server已使用單個表級別排他鎖來取代5000多個單獨的行級排他鎖。這意味着基本上沒有人能夠對這張桌子做任何事情。

對於你的問題(2) - see the answers to this other SO question

+0

問題1的好解釋。謝謝。 – 2013-04-24 05:56:22

相關問題