SQL Server 學習系列之三

  今天在學習《Microsoft SQL Server 2005技術內幕:存儲引擎》時,瞭解到一個知識點:當我們新建一個數據庫時,SQL會複製model數據庫。不巧,我在本地數據庫上建立一個數據庫,就發現了這個問題,力求真實性,截圖保留痕跡:

221619712.jpg

隨即在網上搜了一個解決方案,代碼如下:

declare @sql varchar(100)
while 1=1
begin
select top 1 @sql = 'kill '+cast(spid as varchar(3))
from master..sysprocesses
where spid > 50 and spid <> @@spid
if @@rowcount = 0
break
exec(@sql)
end

在本地上運行之後,問題得到圓滿解決。

本文小結:數據庫的共享鎖(S鎖)和排他鎖(X鎖),是一個非常重要的知識點。在此,先做一下概念,後續再做深入研究:

共享鎖(S鎖):如果事務T對數據A加上共享鎖後,則其他事務只能對A再加共享鎖,不能加排他鎖。獲准共享鎖的事務職能讀取數據,不能修改數據。

排他鎖(X鎖):如果事務T對數據A加上排他鎖後,則其他事務不能在對A加任何類型的封鎖。獲准排他鎖的事務既能讀取數據,也能修改數據。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章