sys.dm_tran_locks (Transact-SQL)
Si applica a: SQL Server
database SQL di Azure Istanza gestita di SQL di Azure
Azure Synapse Analytics Analytics
Platform System (PDW)
Warehouse in Microsoft Fabric
Restituisce informazioni sulle risorse di Gestione blocchi attualmente attive in SQL Server. Ogni riga rappresenta una richiesta attualmente attiva di un blocco concesso o in attesa di essere concesso, effettuata a Gestione blocchi.
Le colonne nel set di risultati sono divise in due gruppi principali: risorsa e richiesta. Nel gruppo relativo alle risorse viene descritta la risorsa per cui viene effettuata la richiesta, mentre nel gruppo relativo alle richieste viene descritta la richiesta di blocco.
Nota
Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_tran_locks
. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
resource_type |
nvarchar(60) | Rappresenta il tipo di risorsa. Il valore può essere DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT, ALLOCATION_UNIT o XACT. |
resource_subtype |
nvarchar(60) | Rappresenta un sottotipo di resource_type . L'acquisizione di un blocco del sottotipo senza contenere un blocco non tipizzato del tipo padre è tecnicamente valido. Sottotipi diversi non sono in conflitto tra loro o con il tipo padre non tipizzato. Non tutti i tipi di risorse hanno sottotipi. |
resource_database_id |
int | ID del database in cui la risorsa è definita a livello di ambito. Tutte le risorse gestite da Gestione blocchi sono definite a livello di ambito dell'ID del database. |
resource_description |
nvarchar(256) | Descrizione della risorsa contenente solo le informazioni non disponibili in altre colonne delle risorse. |
resource_associated_entity_id |
bigint | ID dell'entità in un database a cui è associata una risorsa. Può essere un ID di oggetto, un ID di risorsa HoBT o un ID di unità di allocazione, in base al tipo di risorsa. |
resource_lock_partition |
Int | ID della partizione di blocco per una risorsa di blocco partizionata. Il valore per le risorse di blocco non partizionate è 0 . |
request_mode |
nvarchar(60) | Modalità relativa alla richiesta. Per le richieste concesse, indica la modalità concessa. Per le richieste in attesa, indica la modalità richiesta. NULL = Non è concesso l'accesso alla risorsa. Funge da segnaposto. Sch-S (stabilità dello schema) = Assicura che un elemento dello schema, ad esempio una tabella o un indice, non venga eliminato mentre qualsiasi sessione contiene un blocco di stabilità dello schema sull'elemento dello schema. Sch-M (modifica dello schema) = Deve essere mantenuto da qualsiasi sessione che desidera modificare lo schema della risorsa specificata. Assicura che nessun'altra sessione faccia riferimento all'oggetto specificato. S (condiviso) = Alla sessione di controllo viene concesso l'accesso condiviso alla risorsa. U (Update) = Indica un blocco di aggiornamento acquisito sulle risorse che possono essere eventualmente aggiornate. Viene utilizzato per evitare una forma comune di deadlock che si verifica quando in più sessioni vengono bloccate risorse che potrebbero essere aggiornate in futuro. X (esclusivo) = Alla sessione di controllo viene concesso l'accesso esclusivo alla risorsa. IS (Intent Shared) = Indica l'intenzione di inserire blocchi S su alcune risorse subordinate nella gerarchia di blocchi. IU (Aggiornamento finalità) = Indica l'intenzione di inserire blocchi U su una risorsa subordinata nella gerarchia di blocchi. IX (finalità esclusiva) = Indica l'intenzione di inserire blocchi X su una risorsa subordinata nella gerarchia di blocchi. SIU (Aggiornamento finalità condivisa) = Indica l'accesso condiviso a una risorsa con lo scopo di acquisire blocchi di aggiornamento sulle risorse subordinate nella gerarchia di blocchi. SIX (Shared Intent Exclusive) = Indica l'accesso condiviso a una risorsa con lo scopo di acquisire blocchi esclusivi sulle risorse subordinate nella gerarchia di blocchi. UIX (Update Intent Exclusive) = Indica un blocco di aggiornamento su una risorsa con lo scopo di acquisire blocchi esclusivi sulle risorse subordinate nella gerarchia di blocchi. BU = Usato dalle operazioni bulk. RangeS_S (intervallo di chiavi condiviso e blocco risorsa condivisa) = Indica l'analisi dell'intervallo serializzabile. RangeS_U (intervallo di chiavi condivise e blocco della risorsa di aggiornamento) = Indica l'analisi degli aggiornamenti serializzabile. RangeI_N (Inserisci intervallo di chiavi e blocco risorsa Null) = Usato per testare gli intervalli prima di inserire una nuova chiave in un indice. RangeI_S = Blocco di conversione dell'intervallo di chiavi creato da una sovrapposizione di blocchi RangeI_N e S. RangeI_U = Blocco di conversione dell'intervallo di chiavi, creato da una sovrapposizione di blocchi RangeI_N e U. RangeI_X = Blocco di conversione dell'intervallo di chiavi, creato da una sovrapposizione di blocchi RangeI_N e X. RangeX_S = Blocco di conversione dell'intervallo di chiavi, creato da una sovrapposizione di RangeI_N e RangeS_S. RangeS_S. RangeX_U = Blocco di conversione dell'intervallo di chiavi creato da una sovrapposizione di blocchi RangeI_N e RangeS_U. RangeX_X (esclusivo intervallo di chiavi ed esclusivo blocco delle risorse) = Si tratta di un blocco di conversione usato durante l'aggiornamento di una chiave in un intervallo. |
request_type |
nvarchar(60) | Tipo di richiesta. Il valore è LOCK. |
request_status |
nvarchar(60) | Stato corrente della richiesta. I valori possibili sono GRANTED, CONVERT, WAIT, LOW_PRIORITY_CONVERT, LOW_PRIORITY_WAIT o ABORT_BLOCKERS. Per altre informazioni sulle attese con priorità bassa e sui blocchi di interruzione, vedere la sezione low_priority_lock_wait di ALTER INDEX (Transact-SQL).For more information about low priority waits and abort blockers, see the low_priority_lock_wait section of ALTER INDEX (Transact-SQL). |
request_reference_count |
smallint | Restituisce un numero approssimativo di volte che lo stesso richiedente ha richiesto la risorsa. |
request_lifetime |
int | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
request_session_id |
int | session_id proprietario di questa richiesta. Il proprietario session_id può cambiare per le transazioni distribuite e associate. Un valore indica -2 che la richiesta appartiene a una transazione distribuita orfana. Un valore indica che la richiesta appartiene a una transazione di ripristino posticipata, ad esempio una transazione per cui è stato posticipato un rollback in fase di -3 ripristino perché non è stato possibile completare correttamente il rollback. |
request_exec_context_id |
int | ID del contesto di esecuzione del processo attualmente proprietario della richiesta. |
request_request_id |
int | request_id (ID batch) del processo attualmente proprietario di questa richiesta. Questo valore cambia ogni volta che cambia la connessione mars (Multiple Active Result Set) attiva per una transazione. |
request_owner_type |
nvarchar(60) | Tipo di entità proprietaria della richiesta. Le richieste di Gestione blocchi possono appartenere a varie entità. I valori possibili sono: TRANSACTION = La richiesta appartiene a una transazione. CURSOR = La richiesta appartiene a un cursore. SESSION = La richiesta appartiene a una sessione utente. SHARED_TRANSACTION_WORKSPACE = La richiesta appartiene alla parte condivisa dell'area di lavoro della transazione. EXCLUSIVE_TRANSACTION_WORKSPACE = la richiesta è di proprietà della parte esclusiva dell'area di lavoro della transazione. NOTIFICATION_OBJECT = La richiesta è di proprietà di un componente interno di SQL Server. Questo componente ha richiesto a Gestione blocchi di inviare una notifica quando un altro componente è in attesa del blocco. La caratteristica FileTable è un componente che utilizza questo valore. Nota: gli spazi di lavoro vengono usati internamente per contenere blocchi per le sessioni inserite. |
request_owner_id |
bigint | ID del proprietario specifico della richiesta. Quando una transazione è il proprietario della richiesta, questo valore contiene l'ID transazione. Quando una tabella FileTable è il proprietario della richiesta, request_owner_id ha uno dei valori seguenti:
|
request_owner_guid |
uniqueidentifier | GUID del proprietario specifico della richiesta. Questo valore viene utilizzato soltanto da una transazione distribuita nei casi in cui corrisponde al GUID MS DTC della transazione. |
request_owner_lockspace_id |
nvarchar(32) | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. Questo valore rappresenta l'ID dello spazio di blocco del richiedente. L'ID dello spazio di blocco determina se due richiedenti sono reciprocamente compatibili e possono ottenere blocchi in modalità altrimenti in conflitto. |
lock_owner_address |
varbinary(8) | Indirizzo di memoria della struttura dei dati interna utilizzata per tener traccia della richiesta. Questa colonna può essere unita a con resource_address la colonna in sys.dm_os_waiting_tasks . |
pdw_node_id |
int | Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) Identificatore del nodo in cui è attiva la distribuzione. |
Autorizzazioni
In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader##
server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE
per il database o l'adesione ruolo del server ##MS_ServerStateReader##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.
Osservazioni:
Uno stato di richiesta concessa indica che un blocco è stato concesso per una risorsa al richiedente. Una richiesta in attesa indica che la richiesta non è stata ancora concessa. I tipi di richiesta in attesa seguenti vengono restituiti dalla request_status
colonna :
Uno stato di richiesta di conversione indica che il richiedente ha già ottenuto una richiesta per la risorsa ed è attualmente in attesa di un aggiornamento alla richiesta iniziale.
Uno stato di richiesta in attesa indica che il richiedente non possiede una richiesta concessa per la risorsa.
Poiché sys.dm_tran_locks
viene popolato da strutture di dati di gestione blocchi interne, la gestione di queste informazioni non comporta un sovraccarico aggiuntivo per l'elaborazione regolare. Per la materializzazione di questa vista è richiesto l'accesso alle strutture di dati interne di Gestione blocchi. Ciò può produrre effetti minimi sulla normale elaborazione nel server, che interesseranno solo le risorse con carichi elevati e non saranno altrimenti rilevati. Poiché i dati nella vista corrispondono allo stato di Gestione blocchi in tempo reale, tali dati sono soggetti a modifiche in qualsiasi momento e le righe vengono aggiunte e rimosse con l'acquisizione e il rilascio di blocchi. Le applicazioni che eseguono query su questa vista potrebbero riscontrare prestazioni imprevedibili a causa della natura della protezione dell'integrità delle strutture di gestione blocchi. La vista non contiene informazioni cronologiche.
Due richieste operano sulla stessa risorsa solo se tutte le colonne del gruppo relativo alle risorse sono uguali.
È possibile controllare il blocco delle operazioni di lettura tramite gli strumenti seguenti:
SET TRANSACTION ISOLATION LEVEL per specificare il livello di blocco per una sessione. Per ulteriori informazioni, vedere SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
Hint di tabelle di blocco per specificare il livello di blocco per un riferimento individuale di una tabella in una clausola FROM. Per la sintassi e le restrizioni, vedere Hint di tabella (Transact-SQL).
Una risorsa in esecuzione in uno session_id
può avere più di un blocco concesso. Entità diverse in esecuzione in una sessione possono essere ognuna proprietaria di un blocco sulla stessa risorsa e le informazioni vengono visualizzate nelle request_owner_type
colonne e request_owner_id
restituite da sys.dm_tran_locks
. Se esistono più istanze della stessa request_owner_type
istanza, la request_owner_id
colonna viene usata per distinguere ogni istanza. Per le transazioni distribuite, le request_owner_type
colonne e request_owner_guid
mostrano le diverse informazioni sull'entità.
Ad esempio, Session S1 è proprietario di un blocco condiviso su Table1
; e la transazione T1, in esecuzione nella sessione S1, possiede anche un blocco condiviso su Table1
. In questo caso, la resource_description
colonna restituita da sys.dm_tran_locks
mostra due istanze della stessa risorsa. La request_owner_type
colonna mostra un'istanza come sessione e l'altra come transazione. Inoltre, la resource_owner_id
colonna ha valori diversi.
Più cursori in esecuzione in una sessione non sono distinguibili e vengono considerati come un'unica entità.
Le transazioni distribuite non associate a un session_id
valore sono transazioni orfane e a cui viene assegnato il session_id
valore di -2
. Per altre informazioni, vedere KILL (Transact-SQL).
Locks
I blocchi vengono mantenuti nelle risorse di SQL Server, ad esempio righe lette o modificate durante una transazione, per impedire l'uso simultaneo di risorse da transazioni diverse. Ad esempio, se una transazione mantiene attivo un blocco esclusivo (X) su una riga all'interno di una tabella, nessun'altra transazione potrà modificare la riga fino a quando il blocco non viene rilasciato. La riduzione dei blocchi aumenta la concorrenza e, di conseguenza, potrebbe migliorare le prestazioni.
Dettagli della risorsa
Nella tabella seguente sono elencate le risorse rappresentate nella resource_associated_entity_id
colonna .
Tipo di risorsa | Descrizione risorsa | resource_associated_entity_id |
---|---|---|
DATABASE | Rappresenta un database. | Non applicabile |
FILE | Rappresenta un file di database. Può essere un file di dati o di log. | Non applicabile |
OBJECT | Rappresenta un oggetto di database. Può essere una tabella di dati, una vista, una stored procedure, una stored procedure estesa o qualsiasi oggetto con ID di oggetto. | ID dell'oggetto. |
PAGE | Rappresenta una pagina singola in un file di dati. | ID HoBT. Questo valore corrisponde a sys.partitions.hobt_id . L'ID di risorsa HoBT non è sempre disponibile per le risorse PAGE, poiché rappresenta informazioni aggiuntive che possono essere fornite solo da alcuni chiamanti. |
KEY | Rappresenta una riga in un indice. | ID HoBT. Questo valore corrisponde a sys.partitions.hobt_id . |
EXTENT | Rappresenta un extent di file di dati, ovvero un gruppo di otto pagine contigue. | Non applicabile |
RID | Rappresenta una riga fisica in un heap. | ID HoBT. Questo valore corrisponde a sys.partitions.hobt_id . L'ID di risorsa HoBT non è sempre disponibile per le risorse RID, poiché rappresenta informazioni aggiuntive che possono essere fornite solo da alcuni chiamanti. |
APPLICAZIONE | Rappresenta una risorsa specificata dall'applicazione. | Non applicabile |
METADATI | Rappresenta informazioni sui metadati. | Non applicabile |
HOBT | Rappresenta un heap o un albero B. Si tratta delle strutture del percorso di accesso di base. | ID HoBT. Questo valore corrisponde a sys.partitions.hobt_id . |
ALLOCATION_UNIT | Rappresenta un set di pagine correlate, ad esempio una partizione dell'indice. Ogni unità di allocazione ricopre una singola catena della mappa di allocazione degli indici (IAM, Index Allocation Map). | ID unità di allocazione. Questo valore corrisponde a sys.allocation_units.allocation_unit_id . |
XACT | Risorsa XACT. Correlato al blocco ottimizzato. | Esistono due possibili scenari: Scenario 1 (proprietario) - Tipo di risorsa: XACT .- Descrizione della risorsa: quando si tiene un blocco TID, è resource_description la XACT risorsa.- ID entità associato alla risorsa: resource_associated_entity_id è 0.Scenario 2 (cameriere) - Tipo di risorsa: XACT .- Descrizione della risorsa: quando si attende un blocco TID, è resource_description la XACT risorsa seguita dalla risorsa sottostante KEY o RID dalla risorsa.- ID entità associata alla risorsa: resource_associated_entity_id è l'ID HoBt sottostante. |
Nota
Nella documentazione di SQL Server viene usato in modo generico il termine albero B in riferimento agli indici. Negli indici rowstore, SQL Server implementa un albero B+. Ciò non si applica a indici columnstore o ad archivi dati in memoria. Per altre informazioni, vedere Architettura e guida per la progettazione degli indici SQL Server e Azure SQL.
Nella tabella seguente sono elencati i sottotipi associati a ogni tipo di risorsa.
ResourceSubType | Sincronizzazione |
---|---|
ALLOCATION_UNIT.BULK_OPERATION_PAGE | Pagine pre-assegnate usate per le operazioni bulk. |
ALLOCATION_UNIT.PAGE_COUNT | Statistiche relative al conteggio delle pagine delle unità di allocazione durante operazioni di rimozione posticipate. |
DATABASE.BULKOP_BACKUP_DB | Backup di database con operazioni bulk. |
DATABASE.BULKOP_BACKUP_LOG | Backup di log di database con operazioni bulk. |
DATABASE.CHANGE_TRACKING_CLEANUP | Attività di pulizia per il rilevamento delle modifiche. |
DATABASE.CT_DDL | Operazioni DDL per il rilevamento delle modifiche a livello di tabella e database. |
DATABASE.CONVERSATION_PRIORITY | Operazioni con priorità di conversazione di Service Broker come CREATE BROKER PRIORITY. |
DATABASE.DDL | Operazioni DDL (Data Definition Language) con operazioni relative a filegroup, come la rimozione. |
DATABASE.ENCRYPTION_SCAN | Sincronizzazione della crittografia TDE. |
DATABASE.PLANGUIDE | Sincronizzazione della guida di piano. |
DATABASE.RESOURCE_GOVERNOR_DDL | Istruzioni DDL per le operazioni di Resource Governor come ALTER RESOURCE POOL. |
DATABASE.SHRINK | Operazioni di compattazione database. |
DATABASE.STARTUP | Utilizzato per la sincronizzazione all'avvio del database. |
FILE.SHRINK | Operazioni di compattazione file. |
HOBT.BULK_OPERATION | Operazioni di caricamento bulk ottimizzate per gli heap con analisi simultanea nei livelli di isolamento snapshot, Read uncommitted e Read committed con controllo delle versioni delle righe. |
HOBT.INDEX_REORGANIZE | Operazioni di riorganizzazione di heap o indici. |
OBJECT.COMPILE | Compilazione di stored procedure. |
OBJECT.INDEX_OPERATION | Operazioni sugli indici. |
OBJECT.UPDSTATS | Aggiornamenti alle statistiche di una tabella. |
METADATA.ASSEMBLY | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASSEMBLY_CLR_NAME | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASSEMBLY_TOKEN | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASYMMETRIC_KEY | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT_ACTIONS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT_SPECIFICATION | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AVAILABILITY_GROUP | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CERTIFICATE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CHILD_INSTANCE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.COMPRESSED_FRAGMENT | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.COMPRESSED_ROWSET | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSTATION_ENDPOINT_RECV | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSTATION_ENDPOINT_SEND | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSATION_GROUP | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSATION_PRIORITY | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CREDENTIAL | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CRYPTOGRAPHIC_PROVIDER | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATA_SPACE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATABASE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATABASE_PRINCIPAL | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_MIRRORING_SESSION | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_MIRRORING_WITNESS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_PRINCIPAL_SID | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ENDPOINT | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ENDPOINT_WEBMETHOD | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.EXPR_COLUMN | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.EXPR_HASH | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_CATALOG | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_INDEX | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_STOPLIST | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INDEX_EXTENSION_SCHEME | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INDEXSTATS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INSTANTIATED_TYPE_HASH | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.MESSAGE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.METADATA_CACHE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PARTITION_FUNCTION | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PASSWORD_POLICY | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PERMISSIONS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE_HASH | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE_SCOPE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.QNAME | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.QNAME_HASH | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.REMOTE_SERVICE_BINDING | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ROUTE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SCHEMA | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SECURITY_CACHE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SECURITY_DESCRIPTOR | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SEQUENCE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVER_EVENT_SESSIONS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVER_PRINCIPAL | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_BROKER_GUID | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_CONTRACT | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_MESSAGE_TYPE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.STATS | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SYMMETRIC_KEY | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.USER_TYPE | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_COLLECTION | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_COMPONENT | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_INDEX_QNAME | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
Nella tabella seguente viene fornito il formato della resource_description
colonna per ogni tipo di risorsa.
Conto risorse | Formato | Descrizione |
---|---|---|
DATABASE | Non applicabile | L'ID del database è già disponibile nella resource_database_id colonna . |
FILE | <file_id> |
ID del file rappresentato dalla risorsa. |
OBJECT | <object_id> |
ID dell'oggetto rappresentato dalla risorsa. Questo oggetto può essere qualsiasi oggetto elencato in sys.objects , non solo in una tabella. |
PAGE | <file_id>:<page_in_file> |
Rappresenta l'ID di pagina e di file della pagina rappresentata dalla risorsa. |
KEY | <hash_value> |
Rappresenta un hash delle colonne chiave dalla riga rappresentata dalla risorsa. |
EXTENT | <file_id>:<page_in_files> |
Rappresenta l'ID di pagina e di file dell'extent rappresentato dalla risorsa. L'ID di extent corrisponde all'ID di pagina della prima pagina nell'extent. |
RID | <file_id>:<page_in_file>:<row_on_page> |
Rappresenta l'ID di pagina e l'ID di riga della riga rappresentata dalla risorsa. Se l'ID oggetto associato è 99, questa risorsa rappresenta uno degli otto slot di pagina misti nella prima pagina IAM di una catena IAM. |
APPLICAZIONE | <DbPrincipalId>:<up to 32 characters>:(<hash_value>) |
Rappresenta l'ID dell'entità di database utilizzata per definire l'ambito della risorsa di blocco dell'applicazione. È incluso anche un massimo di 32 caratteri della stringa della risorsa corrispondente alla risorsa di blocco dell'applicazione. In alcuni casi, è possibile visualizzare solo due caratteri a causa della mancata disponibilità della stringa completa. Ciò si verifica solo in fase di recupero del database per i blocchi dell'applicazione che vengono riacquisiti nell'ambito del processo di recupero. Il valore hash rappresenta un hash della stringa di risorsa completa corrispondente a questa risorsa di blocco dell'applicazione. |
HOBT | Non applicabile | L'ID HoBt è incluso come resource_associated_entity_id . |
ALLOCATION_UNIT | Non applicabile | L'ID unità di allocazione è incluso come resource_associated_entity_id . |
XACT | <dbid>:<XdesId low>:<XdesId high> |
Risorsa TID. Correlato al blocco ottimizzato. |
XACT KEY | [XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) |
La risorsa sottostante in cui è in attesa la transazione, con un oggetto KEY dell'indice cluster. Correlato al blocco ottimizzato. |
XACT RID | [XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) |
La risorsa sottostante in cui la transazione è in attesa, con un oggetto RID heap. Correlato al blocco ottimizzato. |
METADATA.ASSEMBLY | assembly_id = A |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASSEMBLY_CLR_NAME | $qname_id = Q |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASSEMBLY_TOKEN | assembly_id = A , $token_id |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ASSYMMETRIC_KEY | asymmetric_key_id = A |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT | audit_id = A |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT_ACTIONS | device_id = D , major_id = M |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AUDIT_SPECIFICATION | audit_specification_id = A |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.AVAILABILITY_GROUP | availability_group_id = A |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CERTIFICATE | certificate_id = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CHILD_INSTANCE | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.COMPRESSED_FRAGMENT | object_id = O , compressed_fragment_id = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.COMPRESSED_ROW | object_id = O |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSTATION_ENDPOINT_RECV | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSTATION_ENDPOINT_SEND | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSATION_GROUP | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CONVERSATION_PRIORITY | conversation_priority_id = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CREDENTIAL | credential_id = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.CRYPTOGRAPHIC_PROVIDER | provider_id = P |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATA_SPACE | data_space_id = D |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATABASE | database_id = D |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DATABASE_PRINCIPAL | principal_id = P |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_MIRRORING_SESSION | database_id = D |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_MIRRORING_WITNESS | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.DB_PRINCIPAL_SID | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ENDPOINT | endpoint_id = E |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ENDPOINT_WEBMETHOD | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_CATALOG | fulltext_catalog_id = F |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_INDEX | object_id = O |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.EXPR_COLUMN | object_id = O , column_id = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.EXPR_HASH | object_id = O , $hash = H |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_CATALOG | fulltext_catalog_id = F |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_INDEX | object_id = O |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.FULLTEXT_STOPLIST | fulltext_stoplist_id = F |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INDEX_EXTENSION_SCHEME | index_extension_id = I |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INDEXSTATS | object_id = O , index_id o stats_id = I |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.INSTANTIATED_TYPE_HASH | user_type_id = U , hash = H |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.MESSAGE | message_id = M |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.METADATA_CACHE | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PARTITION_FUNCTION | function_id = F |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PASSWORD_POLICY | principal_id = P |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PERMISSIONS | class = C |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE | plan_guide_id = P |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE_HASH | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.PLAN_GUIDE_SCOPE | scope_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.QNAME | $qname_id = Q |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.QNAME_HASH | $qname_scope_id = Q , $qname_hash = H |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.REMOTE_SERVICE_BINDING | remote_service_binding_id = R |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.ROUTE | route_id = R |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SCHEMA | schema_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SECURITY_CACHE | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SECURITY_DESCRIPTOR | sd_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SEQUENCE | $seq_type = S , object_id = O |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVER | server_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVER_EVENT_SESSIONS | event_session_id = E |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVER_PRINCIPAL | principal_id = P |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE | service_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_BROKER_GUID | $hash = H1:H2:H3 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_CONTRACT | service_contract_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SERVICE_MESSAGE_TYPE | message_type_id = M |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.STATS | object_id = O , stats_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.SYMMETRIC_KEY | symmetric_key_id = S |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.USER_TYPE | user_type_id = U |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_COLLECTION | xml_collection_id = X |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_COMPONENT | xml_component_id = X |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
METADATA.XML_INDEX_QNAME | object_id = O , $qname_id = Q |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
Esempi
R. Usare sys.dm_tran_locks con altri strumenti
L'esempio seguente illustra uno scenario in cui un'operazione di aggiornamento è bloccata da un'altra transazione. sys.dm_tran_locks
Usando e altri strumenti, vengono fornite informazioni sul blocco delle risorse.
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;
Nella query seguente vengono visualizzate le informazioni di blocco. Il valore per <dbid>
deve essere sostituito con da database_id
sys.databases
.
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>;
La query seguente restituisce informazioni sugli oggetti utilizzando resource_associated_entity_id
dalla query precedente. Questa query deve essere eseguita durante la connessione al database contenente l'oggetto.
SELECT object_name(object_id), *
FROM sys.partitions
WHERE hobt_id=<resource_associated_entity_id> ;
La query seguente mostra le informazioni di blocco.
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;
Rilasciare le risorse eseguendo il rollback delle transazioni.
-- Session 1
ROLLBACK;
GO
-- Session 2
ROLLBACK;
GO
B. Collegare le informazioni della sessione ai thread del sistema operativo
Nell'esempio seguente vengono restituite informazioni che associano un oggetto session_id
a un ID thread di Windows. È possibile utilizzare Performance Monitor di Windows per monitorare le prestazioni del thread. Questa query non restituisce un oggetto session_id
attualmente in sospensione.
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