原理篇:SQL Server數(shù)據(jù)庫表鎖定原理以及如何解除表的鎖定
有幾個(gè)朋友留言建議結(jié)合例子來演示一下,上篇已經(jīng)說過鎖的幾種類型,可以利用系統(tǒng)動(dòng)態(tài)視圖sys.dm_tran_locks查看到,重要的欄位如下:
resource_type:被鎖的資源類型(Database, FILE, Object,PAGE,KEY,EXTENT,RID,APPLICATION,METADATA,HOBT,APPOCATION_UNIT)。
request_mode:鎖的類型(共享鎖,更新鎖,排它鎖,架構(gòu)鎖等)。
resource_description:資源描述。
request_session_id:Request session ID。
一、下面以AdventureWorks2008為示例數(shù)據(jù)庫做簡(jiǎn)要的說明,過濾掉一般的數(shù)據(jù)庫的共享鎖,作為示例必須要看到鎖,所以用WITH(HOLDLOCK)來保持鎖。
1. Shared locks (S) 共享鎖
USE AdventureWorks2008
BEGIN TRAN
select * from Sales.SalesOrderHeader WITH(HOLDLOCK)
where SalesOrderID='43662'
SELECT resource_type, request_mode, resource_description,request_session_id, DB_NAME(resource_database_id)as resource_database
FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE'
--ROLLBACK TRAN
it知識(shí)庫:SQL Server數(shù)據(jù)庫表鎖定原理以及如何解除表的鎖定--示例演示,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。