sys.dm_tran_locks (Transact-SQL)
傳回有關 SQL Server 2012 中目前使用中鎖定管理員資源的資訊。 每一個資料列皆代表一個對鎖定管理員針對已經授與或在等待授與的鎖定的目前使用中要求。
結果集中的資料行,共分成資源和要求兩個主要群組。 資源群組描述鎖定要求所針對的資源,而要求群組則描述該鎖定要求。
資料行名稱 |
資料類型 |
說明 |
||||||||
---|---|---|---|---|---|---|---|---|---|---|
resource_type |
nvarchar(60) |
代表資源類型。 這個值可以是下列值之一:DATABASE、FILE、OBJECT、PAGE、KEY、EXTENT、RID、APPLICATION、METADATA、HOBT 或 ALLOCATION_UNIT。 |
||||||||
resource_subtype |
nvarchar(60) |
代表 resource_type 的子類型。 在技術上即使不保留父類型的非子類型鎖定,它也可以取得子類型鎖定。 不同的子類型,並不會彼此衝突,也不會與非子類型的父類型相衝突。 不過並非所有的資源類型都有子類型。 |
||||||||
resource_database_id |
int |
決定這個資源範圍所用的資料庫識別碼。 所有由鎖定管理員處理的資源,都由資料庫識別碼決定範圍。 |
||||||||
resource_description |
nvarchar(256) |
資源的描述,其中只包含無法從其他資源資料行取得的資訊。 |
||||||||
resource_associated_entity_id |
bigint |
資料庫中與資源相關聯的實體識別碼。 視資源類型而定,它可以是物件識別碼、Hobt 識別碼或配置單位識別碼。 |
||||||||
resource_lock_partition |
Int |
資料分割鎖定資源的鎖定資料分割識別碼。 非資料分割鎖定資源的值是 0。 |
||||||||
request_mode |
nvarchar(60) |
要求的模式。 如果是已授與的要求,則為已授與的模式;如果是等待授與的要求,則為正在要求的模式。 |
||||||||
request_type |
nvarchar(60) |
要求類型。 值為 LOCK。 |
||||||||
request_status |
nvarchar(60) |
這項要求的目前狀態。 可能的值為 GRANTED、CONVERT 或 WAIT。 |
||||||||
request_reference_count |
smallint |
傳回同一個要求器要求這項資源的大約次數。 |
||||||||
request_lifetime |
int |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
||||||||
request_session_id |
int |
目前擁有這項要求的工作階段識別碼。 主控工作階段識別碼會隨著分散式和繫結式交易而改變。 -2 值表示要求屬於被遺棄的分散式交易。 -3 值表示該要求是屬於延遲的復原交易,例如,由於回復作業無法順利完成,因而在復原時延遲的交易。 |
||||||||
request_exec_context_id |
int |
目前擁有這項要求之處理序的工作階段內容識別碼。 |
||||||||
request_request_id |
int |
目前擁有這項要求之處理序的要求識別碼 (批次識別碼)。 只要交易的使用中 Multiple Active Result Set (MARS) 連接一改變,這個值就會隨之改變。 |
||||||||
request_owner_type |
nvarchar(60) |
擁有要求的實體類型。 鎖定管理員要求可以由各種實體所擁有。 可能的值為: TRANSACTION = 要求是由交易所擁有。 CURSOR = 要求是由資料指標所擁有。 SESSION = 要求是由使用者工作階段所擁有。 SHARED_TRANSACTION_WORKSPACE = 要求是由交易工作空間的共用部分所擁有。 EXCLUSIVE_TRANSACTION_WORKSPACE = 要求是由交易工作空間的獨佔部分所擁有。 NOTIFICATION_OBJECT = 要求是由內部 SQL Server 元件所擁有。 這個元件已要求鎖定管理員在另一個元件等候取得鎖定時通知它。 FileTable 功能是使用此值的元件。
|
||||||||
request_owner_id |
bigint |
這項要求的特定擁有者識別碼。 當交易是要求的擁有者時,這個值包含交易識別碼。 當 FileTable 是要求的擁有者時,request_owner_id 有下列其中一個值:
|
||||||||
request_owner_guid |
uniqueidentifier |
此要求之特定擁有者的 GUID。 只有值對應於該交易之 MS DTC GUID 的分散式交易才會使用這個值。 |
||||||||
request_owner_lockspace_id |
nvarchar(32) |
僅供參考之用。不支援。我們無法保證未來的相容性。 這個值代表要求器的鎖定空間識別碼。 鎖定空間識別碼可以判斷兩個要求器是否彼此相容,如果其模式會彼此衝突,是否可被授與鎖定。 |
||||||||
lock_owner_address |
varbinary(8) |
追蹤這項要求所用的內部資料結構記憶體位址。 這個資料行可以與 sys.dm_os_waiting_tasks 中的 resource_address 資料行聯結。 |
權限
需要伺服器的 VIEW SERVER STATE 權限。
備註
如果是已授與的要求狀態,表示已將資源鎖定授與要求器。 而等待中的要求,表示尚未授與該要求。 request_status 資料行會傳回下列等候要求類型:
如果是轉換要求狀態,表示要求器已被授與該資源的要求,目前正在等候升級為即將授與的起始要求。
如果是等候要求狀態,則表示要求器目前沒有已授與的資源要求。
由於 sys.dm_tran_locks 是從內部鎖定管理員資料結構擴展而來,因此維護這些資訊,並不會對正常的處理作業增加額外的負擔。 若要將檢視具體化,需要具備鎖定管理員內部資料結構的存取權。 這可能會對伺服器的正常處理作業產生一些影響。 這些影響應該很難查覺,而且只會影響到常用的資源。 由於這份檢視的資料對應到活性鎖定管理員狀態,因此資料隨時可以變更,而且只要一取得和釋放鎖定,就可以加入和移除資料列。 這份檢視沒有記錄資訊。
只有當所有的資源群組資料行都相等時,才能在相同的資源上進行兩項要求。
您可以利用下列工具控制讀取作業的鎖定:
SET TRANSACTION ISOLATION LEVEL,用來指定工作階段的鎖定層級。 如需詳細資訊,請參閱<SET TRANSACTION ISOLATION LEVEL (Transact-SQL)>。
鎖定資料表提示,用來在 FROM 子句中指定資料表之個別參考的鎖定層級。 關於語法和限制,請參閱<資料表提示 (Transact-SQL)>。
在一個工作階段識別碼下執行資源,可以有一個以上的授與鎖定。 在一個工作階段下執行的不同實體,可以在相同資源各自擁有一個鎖定,而資訊會顯示在 sys.dm_tran_locks 傳回的 request_owner_type 和 request_owner_id 資料行中。 如果同一個 request_owner_type 有多個執行個體,則會用 request_owner_id 資料行來區別每一個執行個體。 如果是分散式交易,則 request_owner_type 和 request_owner_guid 資料行會顯示不同的實體資訊。
例如,假設工作階段 S1 在 Table1 擁有一個共用鎖定,而在工作階段 S1 下執行的交易 T1 也在 Table1 擁有共用鎖定。 在本例中,sys.dm_tran_locks 所傳回的 resource_description 資料行,會顯示相同資源的兩個執行個體。 request_owner_type 資料行會把其中一個執行個體顯示為工作階段,把另一個顯示為交易。 同時,resource_owner_id 資料行也會有不同的值。
在一個工作階段下執行的多個資料指標是無法區分的,它們會被視為一個實體。
與工作階段識別碼值無關的分散式交易是被遺棄的交易,系統會指派 -2 值做為交易的工作階段識別碼。 如需詳細資訊,請參閱<KILL (Transact-SQL)>。
資源詳細資料
下表列出 resource_associated_entity_id 資料行中所呈現的資源。
資源類型 |
資源描述 |
Resource_associated_entity_id |
---|---|---|
DATABASE |
代表資料庫。 |
不適用 |
FILE |
代表資料庫檔案。 這個檔案可以是資料或記錄檔。 |
不適用 |
OBJECT |
代表資料庫物件。 這個物件可以是資料表、檢視、預存程序、擴充預存程序或任何具有物件識別碼的物件。 |
物件識別碼 |
PAGE |
代表資料檔中的一頁。 |
HoBt 識別碼。 這個值對應於 sys.partitions.hobt_id。 HoBt 識別碼不一定都適用於 PAGE 資源,因為 HoBt 識別碼是可由呼叫者提供的額外資訊,但不是所有的呼叫者都可以提供這些資訊。 |
KEY |
代表索引中的一個資料列。 |
HoBt 識別碼。 這個值對應於 sys.partitions.hobt_id。 |
EXTENT |
代表資料檔範圍。 一個範圍是八個連續頁的群組。 |
不適用 |
RID |
代表堆積中的一個實體資料列。 |
HoBt 識別碼。 這個值對應於 sys.partitions.hobt_id。 HoBt 識別碼不一定都適用於 RID 資源,因為 HoBt 識別碼是可由呼叫者提供的額外資訊,但不是所有的呼叫者都可以提供這些資訊。 |
APPLICATION |
代表應用程式指定的資源。 |
不適用 |
METADATA |
代表中繼資料資訊。 |
不適用 |
HOBT |
代表堆積或 B 型樹狀目錄。 這些是基本的存取路徑結構。 |
HoBt 識別碼。 這個值對應於 sys.partitions.hobt_id。 |
ALLOCATION_UNIT |
代表一組相關頁面,例如,索引資料分割。 每一個配置單位都涵蓋一個索引配置對應 (IAM) 鏈結。 |
配置單位識別碼。 這個值對應於 sys.allocation_units.allocation_unit_id。 |
下表列出各資源類型所關聯的子類型。
ResourceSubType |
同步處理 |
---|---|
ALLOCATION_UNIT.BULK_OPERATION_PAGE |
用於大量作業的預先配置頁面。 |
ALLOCATION_UNIT.PAGE_COUNT |
延遲卸除作業期間的配置單位頁面計數統計資料。 |
DATABASE.BULKOP_BACKUP_DB |
包含大量作業的資料庫備份。 |
DATABASE.BULKOP_BACKUP_LOG |
包含大量作業的資料庫記錄備份。 |
DATABASE.CHANGE_TRACKING_CLEANUP |
變更追蹤清除工作。 |
DATABASE.CT_DDL |
資料庫與資料表層級的變更追蹤 DDL 作業。 |
DATABASE.CONVERSATION_PRIORITY |
Service Broker 交談優先權作業,例如 CREATE BROKER PRIORITY。 |
DATABASE.DDL |
包含檔案群組作業的資料定義語言 (DDL) 作業,例如卸除。 |
DATABASE.ENCRYPTION_SCAN |
TDE 加密同步處理。 |
DATABASE.PLANGUIDE |
計畫指南同步處理。 |
DATABASE.RESOURCE_GOVERNOR_DDL |
資源管理員作業的 DDL 作業,例如 ALTER RESOURCE POOL。 |
DATABASE.SHRINK |
資料庫壓縮作業。 |
DATABASE.STARTUP |
用於同步處理資料庫啟動。 |
FILE.SHRINK |
檔案壓縮作業。 |
HOBT.BULK_OPERATION |
在下列隔離等級下,具有並行掃描的堆積最佳化大量載入作業:快照集、讀取未認可,以及使用資料列版本設定認可的讀取。 |
HOBT.INDEX_REORGANIZE |
堆積或索引重新組織作業。 |
OBJECT.COMPILE |
預存程序編譯。 |
OBJECT.INDEX_OPERATION |
索引作業。 |
OBJECT.UPDSTATS |
資料表的統計資料更新。 |
METADATA.ASSEMBLY |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASSEMBLY_CLR_NAME |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASSEMBLY_TOKEN |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASYMMETRIC_KEY |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT_ACTIONS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT_SPECIFICATION |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AVAILABILITY_GROUP |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CERTIFICATE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CHILD_INSTANCE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.COMPRESSED_FRAGMENT |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.COMPRESSED_ROWSET |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSTATION_ENDPOINT_RECV |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSTATION_ENDPOINT_SEND |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSATION_GROUP |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSATION_PRIORITY |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CREDENTIAL |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CRYPTOGRAPHIC_PROVIDER |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATA_SPACE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATABASE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATABASE_PRINCIPAL |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_MIRRORING_SESSION |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_MIRRORING_WITNESS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_PRINCIPAL_SID |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ENDPOINT |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ENDPOINT_WEBMETHOD |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.EXPR_COLUMN |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.EXPR_HASH |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_CATALOG |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_INDEX |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_STOPLIST |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INDEX_EXTENSION_SCHEME |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INDEXSTATS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INSTANTIATED_TYPE_HASH |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.MESSAGE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.METADATA_CACHE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PARTITION_FUNCTION |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PASSWORD_POLICY |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PERMISSIONS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PLAN_GUIDE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PLAN_GUIDE_HASH |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PLAN_GUIDE_SCOPE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.QNAME |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.QNAME_HASH |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.REMOTE_SERVICE_BINDING |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ROUTE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SCHEMA |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SECURITY_CACHE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SECURITY_DESCRIPTOR |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SEQUENCE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVER_EVENT_SESSIONS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVER_PRINCIPAL |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_BROKER_GUID |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_CONTRACT |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_MESSAGE_TYPE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.STATS |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SYMMETRIC_KEY |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.USER_TYPE |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_COLLECTION |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_COMPONENT |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_INDEX_QNAME |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
下表提供各種資源類型之 resource_description 資料行的格式。
資源 |
格式 |
說明 |
---|---|---|
DATABASE |
不適用 |
resource_database_id 資料行中已經提供了資料庫識別碼。 |
FILE |
<file_id> |
這項資源所代表的檔案識別碼。 |
OBJECT |
<object_id> |
這項資源所代表的物件識別碼。 這個物件可以是 sys.objects 中列出的任何物件,而不只是資料表。 |
PAGE |
<file_id>:<page_in_file> |
代表這項資源所代表之頁面的檔案和頁面識別碼。 |
KEY |
<hash_value> |
代表這項資源所代表之資料列的索引鍵資料行雜湊。 |
EXTENT |
<file_id>:<page_in_files> |
代表這項資源所代表之範圍的檔案和頁面識別碼。 這個範圍識別碼,與範圍中第一頁的頁面識別碼相同。 |
RID |
<file_id>:<page_in_file>:<row_on_page> |
代表這項資源所代表之資料列的頁面識別碼和資料列識別碼。 請注意,如果相關聯的物件識別碼是 99,這項資源就代表 IAM 鏈結的第一個 IAM 頁面上,八個混合頁面位置之一。 |
APPLICATION |
<DbPrincipalId>:<upto 32 characters>:(<hash_value>) |
代表制定這個應用程式鎖定資源範圍所用之資料庫主體的識別碼。 其中包含來自對應於這個應用程式鎖定資源的資源字串,最多可以包含 32 個字元。 在某些情況下,由於完整字串已經無法使用,因此只能顯示 2 個字元。 這個行為只發生在資料庫復原時,復原程序必須重新取得應用程式鎖定。 雜湊值代表對應於這個應用程式鎖定資源的完整資源字串雜湊。 |
HOBT |
不適用 |
HoBt 識別碼會當做 resource_associated_entity_id 加入。 |
ALLOCATION_UNIT |
不適用 |
配置單位識別碼會被當做 resource_associated_entity_id 併入。 |
METADATA.ASSEMBLY |
assembly_id = A |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASSEMBLY_CLR_NAME |
$qname_id = Q |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASSEMBLY_TOKEN |
assembly_id = A, $token_id |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ASSYMMETRIC_KEY |
asymmetric_key_id = A |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT |
audit_id = A |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT_ACTIONS |
device_id = D, major_id = M |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AUDIT_SPECIFICATION |
audit_specification_id = A |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.AVAILABILITY_GROUP |
availability_group_id = A |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CERTIFICATE |
certificate_id = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CHILD_INSTANCE |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.COMPRESSED_FRAGMENT |
object_id = O , compressed_fragment_id = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.COMPRESSED_ROW |
object_id = O |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSTATION_ENDPOINT_RECV |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSTATION_ENDPOINT_SEND |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSATION_GROUP |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CONVERSATION_PRIORITY |
conversation_priority_id = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CREDENTIAL |
credential_id = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.CRYPTOGRAPHIC_PROVIDER |
provider_id = P |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATA_SPACE |
data_space_id = D |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATABASE |
database_id = D |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DATABASE_PRINCIPAL |
principal_id = P |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_MIRRORING_SESSION |
database_id = D |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_MIRRORING_WITNESS |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.DB_PRINCIPAL_SID |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ENDPOINT |
endpoint_id = E |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ENDPOINT_WEBMETHOD |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_CATALOG |
fulltext_catalog_id = F |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_INDEX |
object_id = O |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.EXPR_COLUMN |
object_id = O, column_id = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.EXPR_HASH |
object_id = O, $hash = H |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_CATALOG |
fulltext_catalog_id = F |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_INDEX |
object_id = O |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.FULLTEXT_STOPLIST |
fulltext_stoplist_id = F |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INDEX_EXTENSION_SCHEME |
index_extension_id = I |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INDEXSTATS |
object_id = O, index_id or stats_id = I |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.INSTANTIATED_TYPE_HASH |
user_type_id = U, hash = H |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.MESSAGE |
message_id = M |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.METADATA_CACHE |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PARTITION_FUNCTION |
function_id = F |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PASSWORD_POLICY |
principal_id = P |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PERMISSIONS |
class = C |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.PLAN_GUIDE |
plan_guide_id = P |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA. PLAN_GUIDE_HASH |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA. PLAN_GUIDE_SCOPE |
scope_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.QNAME |
$qname_id = Q |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.QNAME_HASH |
$qname_scope_id = Q, $qname_hash = H |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.REMOTE_SERVICE_BINDING |
remote_service_binding_id = R |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.ROUTE |
route_id = R |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SCHEMA |
schema_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SECURITY_CACHE |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SECURITY_DESCRIPTOR |
sd_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SEQUENCE |
$seq_type = S, object_id = O |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVER |
server_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVER_EVENT_SESSIONS |
event_session_id = E |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVER_PRINCIPAL |
principal_id = P |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE |
service_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_BROKER_GUID |
$hash = H1:H2:H3 |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_CONTRACT |
service_contract_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SERVICE_MESSAGE_TYPE |
message_type_id = M |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.STATS |
object_id = O, stats_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.SYMMETRIC_KEY |
symmetric_key_id = S |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.USER_TYPE |
user_type_id = U |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_COLLECTION |
xml_collection_id = X |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_COMPONENT |
xml_component_id = X |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
METADATA.XML_INDEX_QNAME |
object_id = O, $qname_id = Q |
僅供參考之用。不支援。我們無法保證未來的相容性。 |
範例
A.使用 sys.dm_tran_locks 與其他工具
下列範例將示範更新作業遭其他交易封鎖的狀況。 使用 sys.dm_tran_locks 與其他工具提供有關鎖定資源的資訊。
USE tempdb;
GO
-- Create test table and index.
CREATE TABLE t_lock
(
c1 int, c2 int
);
GO
CREATE INDEX t_lock_ci on t_lock(c1);
GO
-- Insert values into test table
INSERT INTO t_lock VALUES (1, 1);
INSERT INTO t_lock VALUES (2,2);
INSERT INTO t_lock VALUES (3,3);
INSERT INTO t_lock VALUES (4,4);
INSERT INTO t_lock VALUES (5,5);
INSERT INTO t_lock VALUES (6,6);
GO
-- Session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRAN
SELECT c1
FROM t_lock
WITH(holdlock, rowlock);
-- Session 2
BEGIN TRAN
UPDATE t_lock SET c1 = 10
下列查詢將會顯示鎖定資訊。 <dbid> 的值應會置換成 sys.databases 中的 database_id。
SELECT resource_type, resource_associated_entity_id,
request_status, request_mode,request_session_id,
resource_description
FROM sys.dm_tran_locks
WHERE resource_database_id = <dbid>
下列查詢會利用上一項查詢的 resource_associated_entity_id 來傳回物件資訊。 您必須在連接到包含物件的資料庫時執行這項查詢。
SELECT object_name(object_id), *
FROM sys.partitions
WHERE hobt_id=<resource_associated_entity_id>
下列查詢將會顯示封鎖資訊。
SELECT
t1.resource_type,
t1.resource_database_id,
t1.resource_associated_entity_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM sys.dm_tran_locks as t1
INNER JOIN sys.dm_os_waiting_tasks as t2
ON t1.lock_owner_address = t2.resource_address;
透過回復交易的方式來釋放資源。
-- Session 1
ROLLBACK;
GO
-- Session 2
ROLLBACK;
GO
B.將工作階段資訊連結到作業系統執行緒
下列範例會傳回與 Windows 執行緒識別碼的工作階段識別碼相關聯的資訊。 執行緒的效能可以再 Windows 效能監視器中監視。 這項查詢不會傳回目前睡眠中的工作階段識別碼。
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO