共用方式為


sys.dm_tran_locks (Transact-SQL)

傳回有關 SQL Server 2008 R2 中目前使用中鎖定管理員資源的資訊。每一個資料列,都代表一個針對已經授與或者等待授與的鎖定,發給鎖定管理員的目前使用中要求。

結果集中的資料行,共分成資源和要求兩個主要群組。資源群組描述鎖定要求所針對的資源,而要求群組則描述該鎖定要求。

資料行名稱

資料類型

說明

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 = 要求是由交易工作空間的獨佔部分所擁有。

附註附註
工作空間會在內部使用,為編列的工作階段保留鎖定。

request_owner_id

bigint

這項要求的特定擁有者識別碼。這個值只用在作為交易識別碼使用的交易。

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 資料行也會有不同的值。

在一個工作階段下執行的多個資料指標是無法區分的,它們會被視為一個實體。

如需有關 SQL Server Database Engine 所用之鎖定類型的詳細資訊,請參閱<Database Engine 中的鎖定>。

與工作階段識別碼值無關的分散式交易是被遺棄的交易,系統會指派 -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.CERTIFICATE

僅供參考之用。不支援。我們無法保證未來的相容性。

METADATA.CHILD_INSTANCE

僅供參考之用。不支援。我們無法保證未來的相容性。

METADATA.COMPRESSED_FRAGMENT

僅供參考之用。不支援。我們無法保證未來的相容性。

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.CERTIFICATE

certificate_id = C

僅供參考之用。不支援。我們無法保證未來的相容性。

METADATA.CHILD_INSTANCE

$hash = H1:H2:H3

僅供參考之用。不支援。我們無法保證未來的相容性。

METADATA.COMPRESSED_FRAGMENT

compressed_fragment_id = C

僅供參考之用。不支援。我們無法保證未來的相容性。

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 或 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),(2,2),(3,3),(4,4),(5,5),(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), partition_id, index_id, partition_number
    hobt_id, rows
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