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


重要提示:


