共用方式為


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 有下列其中一個值:

說明

-4

已取得資料庫鎖定的 FileTable。

-3

已取得資料表鎖定的 FileTable。

其他值

此值表示檔案控制代碼。 此值在動態管理檢視 sys.dm_filestream_non_transacted_handles (Transact-SQL) 中也會以 fcb_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 是從內部鎖定管理員資料結構擴展而來,因此維護這些資訊,並不會對正常的處理作業增加額外的負擔。 若要將檢視具體化,需要具備鎖定管理員內部資料結構的存取權。 這可能會對伺服器的正常處理作業產生一些影響。 這些影響應該很難查覺,而且只會影響到常用的資源。 由於這份檢視的資料對應到活性鎖定管理員狀態,因此資料隨時可以變更,而且只要一取得和釋放鎖定,就可以加入和移除資料列。 這份檢視沒有記錄資訊。

只有當所有的資源群組資料行都相等時,才能在相同的資源上進行兩項要求。

您可以利用下列工具控制讀取作業的鎖定:

在一個工作階段識別碼下執行資源,可以有一個以上的授與鎖定。 在一個工作階段下執行的不同實體,可以在相同資源各自擁有一個鎖定,而資訊會顯示在 sys.dm_tran_locks 傳回的 request_owner_typerequest_owner_id 資料行中。 如果同一個 request_owner_type 有多個執行個體,則會用 request_owner_id 資料行來區別每一個執行個體。 如果是分散式交易,則 request_owner_typerequest_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

請參閱

參考

sys.dm_tran_database_transactions (Transact-SQL)

動態管理檢視和函數 (Transact-SQL)

交易相關的動態管理檢視和函數 (Transact-SQL)