更新日期: 2006 年 4 月 14 日
報(bào)告有關(guān)鎖的信息。
重要提示: |
---|
在 Microsoft SQL Server 2005 中包含此系統(tǒng)存儲(chǔ)過程主題僅僅是為了實(shí)現(xiàn)向后兼容性,。若要獲取有關(guān) SQL Server 2005 數(shù)據(jù)庫引擎 中的鎖的信息,,請(qǐng)使用 sys.dm_tran_locks 動(dòng)態(tài)管理視圖。有關(guān)詳細(xì)信息,,請(qǐng)參閱 sys.dm_tran_locks,。
|
重要提示: |
---|
與 SQL Server 的早期版本相比,此功能有所更改,。有關(guān)詳細(xì)信息,,請(qǐng)參閱SQL Server 2005 中數(shù)據(jù)庫引擎功能的重大更改。
|
- [ @spid1 = ] 'session ID1'
-
來自用戶想要鎖定其信息的 sys.dm_exec_sessions 的 數(shù)據(jù)庫引擎 會(huì)話 ID(SQL Server 2000 和更早版本中的 SPID)號(hào),。session ID1 是 int,,默認(rèn)值是 NULL。執(zhí)行 sp_who 可獲取有關(guān)該會(huì)話的進(jìn)程信息,。如果未指定 會(huì)話 ID1,,則顯示有關(guān)所有鎖的信息。
- [ @spid2 = ] 'session ID2'
-
來自 sys.dm_exec_sessions 的另一個(gè)數(shù)據(jù)庫引擎進(jìn)程 ID 號(hào),,該進(jìn)程 ID 號(hào)可能與 session ID1 同時(shí)具有鎖,,并且用戶也需要其有關(guān)信息。session ID2 是 int,,默認(rèn)值為 NULL,。
在 sp_lock 結(jié)果集中,由 @spid1 和 @spid2 參數(shù)指定的會(huì)話所持有的每個(gè)鎖都對(duì)應(yīng)一行,。如果既未指定 @spid1 又未指定 @spid2,,則結(jié)果集將報(bào)告當(dāng)前在數(shù)據(jù)庫引擎實(shí)例中處于活動(dòng)狀態(tài)的所有會(huì)話的鎖。
列名 | 數(shù)據(jù)類型 | 說明 |
---|---|---|
spid |
smallint |
請(qǐng)求鎖的進(jìn)程的數(shù)據(jù)庫引擎會(huì)話 ID 號(hào)。 |
dbid |
smallint |
保留鎖的數(shù)據(jù)庫的標(biāo)識(shí)號(hào),??梢允褂?DB_NAME() 函數(shù)來標(biāo)識(shí)數(shù)據(jù)庫。 |
ObjId |
int |
持有鎖的對(duì)象的標(biāo)識(shí)號(hào),??梢栽谙嚓P(guān)數(shù)據(jù)庫中使用 OBJECT_NAME() 函數(shù)來標(biāo)識(shí)對(duì)象。值為 99 時(shí)是一種特殊情況,,表示用于記錄數(shù)據(jù)庫中頁分配的其中一個(gè)系統(tǒng)頁的鎖,。 |
IndId |
smallint |
持有鎖的索引的標(biāo)識(shí)號(hào)。 |
Type |
nchar(4) |
鎖的類型: RID = 表中單個(gè)行的鎖,,由行標(biāo)識(shí)符 (RID) 標(biāo)識(shí),。 KEY = 索引內(nèi)保護(hù)可串行事務(wù)中一系列鍵的鎖。 PAG = 數(shù)據(jù)頁或索引頁的鎖,。 EXT = 對(duì)某區(qū)的鎖,。 TAB = 整個(gè)表(包括所有數(shù)據(jù)和索引)的鎖。 DB = 數(shù)據(jù)庫的鎖,。 FIL = 數(shù)據(jù)庫文件的鎖,。 APP = 指定的應(yīng)用程序資源的鎖。 MD = 元數(shù)據(jù)或目錄信息的鎖,。 HBT = 堆或 B 樹索引的鎖,。在 SQL Server 2005 中此信息不完整。 AU = 分配單元的鎖,。在 SQL Server 2005 中此信息不完整,。 |
Resource |
nchar(32) |
標(biāo)識(shí)被鎖定資源的值。值的格式取決于 Type 列標(biāo)識(shí)的資源類型: Type 值:Resource 值 RID:格式為 fileid:pagenumber:rid 的標(biāo)識(shí)符,,其中 fileid 標(biāo)識(shí)包含頁的文件,,pagenumber 標(biāo)識(shí)包含行的頁,rid 標(biāo)識(shí)頁上的特定行,。fileid 與 sys.database_files 目錄視圖中的 file_id 列相匹配。 KEY:數(shù)據(jù)庫引擎內(nèi)部使用的十六進(jìn)制數(shù),。 PAG:格式為 fileid:pagenumber 的數(shù)字,,其中 fileid 標(biāo)識(shí)包含頁的文件,pagenumber 標(biāo)識(shí)頁,。 EXT:標(biāo)識(shí)區(qū)中的第一頁的數(shù)字,。該數(shù)字的格式為 fileid:pagenumber。 TAB:沒有提供信息,,因?yàn)橐言?ObjId 列中標(biāo)識(shí)了表,。 DB:沒有提供信息,因?yàn)橐言?dbid 列中標(biāo)識(shí)了數(shù)據(jù)庫。 FIL:文件的標(biāo)識(shí)符,,與 sys.database_files 目錄視圖中的 file_id 列相匹配,。 APP:被鎖定的應(yīng)用程序資源的唯一標(biāo)識(shí)符。格式為 DbPrincipleId:<資源字符串的前 2 個(gè)到 16 個(gè)字符><哈希運(yùn)算值>,。 MD:隨資源類型而變化,。有關(guān)詳細(xì)信息,請(qǐng)參閱 sys.dm_tran_locks 中 resource_description 列的說明,。 HBT:沒有提供任何信息,。請(qǐng)改用 sys.dm_tran_locks 動(dòng)態(tài)管理視圖。 AU:沒有提供任何信息,。請(qǐng)改用 sys.dm_tran_locks 動(dòng)態(tài)管理視圖,。 |
模式 |
nvarchar(8) |
所請(qǐng)求的鎖模式??梢允牵?/p> NULL = 不授予對(duì)資源的訪問權(quán)限,。用作占位符。 Sch-S = 架構(gòu)穩(wěn)定性,。確保在任何會(huì)話持有對(duì)架構(gòu)元素(例如表或索引)的架構(gòu)穩(wěn)定性鎖時(shí),,不刪除該架構(gòu)元素。 Sch-M = 架構(gòu)修改,。必須由要更改指定資源架構(gòu)的任何會(huì)話持有,。確保沒有其他會(huì)話正在引用所指示的對(duì)象。 S = 共享,。授予持有鎖的會(huì)話對(duì)資源的共享訪問權(quán)限,。 U = 更新。指示對(duì)最終可能更新的資源獲取的更新鎖,。用于防止一種常見的死鎖,,這種死鎖在多個(gè)會(huì)話鎖定資源以便稍后對(duì)資源進(jìn)行更新時(shí)發(fā)生。 X = 排他,。授予持有鎖的會(huì)話對(duì)資源的獨(dú)占訪問權(quán)限,。 IS = 意向共享。指示有意將 S 鎖放置在鎖層次結(jié)構(gòu)中的某個(gè)從屬資源上,。 IU = 意向更新,。指示有意將 U 鎖放置在鎖層次結(jié)構(gòu)中的某個(gè)從屬資源上。 IX = 意向排他,。指示有意將 X 鎖放置在鎖層次結(jié)構(gòu)中的某個(gè)從屬資源上,。 SIU = 共享意向更新。指示對(duì)有意在鎖層次結(jié)構(gòu)中的從屬資源上獲取更新鎖的資源進(jìn)行共享訪問,。 SIX = 共享意向排他,。指示對(duì)有意在鎖層次結(jié)構(gòu)中的從屬資源上獲取排他鎖的資源進(jìn)行共享訪問,。 UIX = 更新意向排他。指示對(duì)有意在鎖層次結(jié)構(gòu)中的從屬資源上獲取排他鎖的資源持有的更新鎖,。 BU = 大容量更新,。用于大容量操作。 RangeS_S = 共享鍵范圍和共享資源鎖,。指示可串行范圍掃描,。 RangeS_U = 共享鍵范圍和更新資源鎖。指示可串行更新掃描,。 RangeI_N = 插入鍵范圍和空資源鎖,。用于在將新鍵插入索引前測試范圍。 RangeI_S = 鍵范圍轉(zhuǎn)換鎖,。由 RangeI_N 和 S 鎖的重疊創(chuàng)建,。 RangeI_U = 由 RangeI_N 和 U 鎖的重疊創(chuàng)建的鍵范圍轉(zhuǎn)換鎖。 RangeI_X = 由 RangeI_N 和 X 鎖的重疊創(chuàng)建的鍵范圍轉(zhuǎn)換鎖,。 RangeX_S = 由 RangeI_N 和 RangeS_S 鎖的重疊創(chuàng)建的鍵范圍轉(zhuǎn)換鎖,。 RangeX_U = 由 RangeI_N 和 RangeS_U 鎖的重疊創(chuàng)建的鍵范圍轉(zhuǎn)換鎖。 RangeX_X = 排他鍵范圍和排他資源鎖,。這是在更新范圍中的鍵時(shí)使用的轉(zhuǎn)換鎖,。 |
Status |
nvarchar(5) |
鎖的請(qǐng)求狀態(tài): CNVRT:鎖正在從另一種模式進(jìn)行轉(zhuǎn)換,但是轉(zhuǎn)換被另一個(gè)持有鎖(模式相沖突)的進(jìn)程阻塞,。 GRANT:已獲取鎖,。 WAIT:鎖被另一個(gè)持有鎖(模式相沖突)的進(jìn)程阻塞。 |
用戶可以通過下列方式控制讀取操作的鎖定:
- 使用 SET TRANSACTION ISOLATION LEVEL 指定會(huì)話的鎖定級(jí)別,。有關(guān)語法和限制,,請(qǐng)參閱 SET TRANSACTION ISOLATION LEVEL (Transact-SQL)。
- 使用鎖定表提示來為 FROM 子句中引用的各個(gè)表指定鎖定級(jí)別,。有關(guān)語法和限制,,請(qǐng)參閱表提示 (Transact-SQL)。
有關(guān)數(shù)據(jù)庫引擎使用的鎖類型的詳細(xì)信息,,請(qǐng)參閱數(shù)據(jù)庫引擎中的鎖定,。
所有沒有與 SPID 值相關(guān)聯(lián)的分布式事務(wù)都是孤立事務(wù)。數(shù)據(jù)庫引擎為所有孤立的分布式事務(wù)賦予 SPID 值 -2,,這使得用戶能夠更容易標(biāo)識(shí)阻塞的分布式事務(wù),。有關(guān)詳細(xì)信息,請(qǐng)參閱使用標(biāo)記的事務(wù)(完全恢復(fù)模式),。