|
原理篇:SQL Server數據庫表鎖定原理以及如何解除表的鎖定
有幾個朋友留言建議結合例子來演示一下,上篇已經說過鎖的幾種類型,可以利用系統動態視圖sys.dm_tran_locks查看到,重要的欄位如下:
resource_type:被鎖的資源類型(Database, FILE, Object,PAGE,KEY,EXTENT,RID,APPLICATION,METADATA,HOBT,APPOCATION_UNIT)。
request_mode:鎖的類型(共享鎖,更新鎖,排它鎖,架構鎖等)。
resource_description:資源描述。
request_session_id:Request session ID。
一、下面以AdventureWorks2008為示例數據庫做簡要的說明,過濾掉一般的數據庫的共享鎖,作為示例必須要看到鎖,所以用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知識庫:SQL Server數據庫表鎖定原理以及如何解除表的鎖定--示例演示,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。