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 是從內部鎖定管理員資料結構擴展而來,因此維護這些資訊,並不會對正常的處理作業增加額外的負擔。若要將檢視具體化,需要具備鎖定管理員內部資料結構的存取權。這可能會對伺服器的正常處理作業產生一些影響。這些影響應該很難查覺,而且只會影響到常用的資源。由於這份檢視的資料對應到活性鎖定管理員狀態,因此資料隨時可以變更,而且只要一取得和釋放鎖定,就可以加入和移除資料列。這份檢視沒有記錄資訊。
只有當所有的資源群組資料行都相等時,才能在相同的資源上進行兩項要求。
您可以利用下列工具控制讀取作業的鎖定:
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 資料行也會有不同的值。
在一個工作階段下執行的多個資料指標是無法區分的,它們會被視為一個實體。
如需有關 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