sys.dm_tran_locks (Transact-SQL)

Restituisce informazioni sulle risorse di Gestione blocchi attualmente attive. 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.

Nome colonna

Tipo di dati

Descrizione

resource_type

nvarchar(60)

Rappresenta il tipo di risorsa. Può essere uno dei valori seguenti: DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT o ALLOCATION_UNIT.

resource_subtype

nvarchar(60)

Rappresenta un sottotipo di resource_type. È tecnicamente possibile acquisire un blocco di un sottotipo senza mantenere un blocco senza sottotipi del tipo padre. Sottotipi diversi non sono in conflitto reciproco o con il tipo padre senza sottotipi. 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.

request_type

nvarchar(60)

Tipo di richiesta. Il valore è LOCK.

request_status

nvarchar(60)

Stato corrente della richiesta. I valori possibili sono GRANTED, CONVERT o WAIT.

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

ID di sessione attualmente proprietario della richiesta. L'ID di sessione proprietario può cambiare per le transazioni distribuite e associate. Il valore -2 indica che la richiesta appartiene a una transazione distribuita orfana. Il valore -3 indica che la richiesta appartiene a una transazione di recupero posticipata, ad esempio una transazione per cui durante il recupero un rollback è stato posticipato poiché non poteva essere completato correttamente.

request_exec_context_id

int

ID del contesto di esecuzione del processo attualmente proprietario della richiesta.

request_request_id

int

ID della richiesta (ID batch) del processo attualmente proprietario della richiesta. Questo valore verrà modificato ogni volta che viene modificata 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 appartiene alla parte esclusiva dell'area di lavoro della transazione.

NotaNota
Le aree di lavoro vengono utilizzate internamente per mantenere attivi i blocchi per le sessioni integrate.

request_owner_id

bigint

ID del proprietario specifico della richiesta. Questo valore viene utilizzato soltanto per le transazioni per cui questo è l'ID di transazione.

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 in join con la colonna resource_address in sys.dm_os_waiting_tasks.

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE nel 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. La colonna request_status restituisce i tipi di richieste in attesa seguenti:

  • 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 popolata da strutture di dati di Gestione blocchi interne, il mantenimento di queste informazioni non determina un overhead aggiuntivo rispetto alla normale elaborazione. 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. 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 informazioni sulla sintassi e sulle restrizioni, vedere Hint di tabella (Transact-SQL).

Una risorsa in esecuzione in un ID di sessione può ottenere la concessione di più blocchi. Diverse entità in esecuzione in una sessione possono possedere ognuna un blocco sulla stessa risorsa. Le informazioni vengono visualizzate nelle colonne request_owner_type e request_owner_id restituite da sys.dm_tran_locks. Se esistono più istanze dello stesso request_owner_type, per distinguere ogni istanza viene utilizzata la colonna request_owner_id. Per le transazioni distribuite, nelle colonne request_owner_type e request_owner_guid verranno visualizzate le informazioni relative alle diverse entità.

Ad esempio, la sessione S1 possiede un blocco condiviso sulla tabella Table1 e la transazione T1, in esecuzione nella sessione S1, possiede ugualmente un blocco condiviso sulla tabella Table1. In questo caso, la colonna resource_description restituita da sys.dm_tran_locks conterrà due istanze della stessa risorsa. Nella colonna request_owner_type un'istanza verrà visualizzata come sessione e l'altra come transazione. La colonna resource_owner_id conterrà inoltre valori diversi.

[!NOTA]

Più cursori in esecuzione in una sessione non sono distinguibili e vengono considerati come un'unica entità.

Per ulteriori informazioni sui tipi di blocco utilizzati dal Motore di database di SQL Server, vedere Utilizzo dei blocchi in Motore di database.

Le transazioni distribuite non associate a un valore di ID di sessione sono transazioni orfane a cui viene assegnato il valore di ID di sessione -2. Per ulteriori informazioni, vedere KILL (Transact-SQL).

Informazioni dettagliate sulle risorse

Nella tabella seguente sono elencate le risorse rappresentate nella colonna resource_associated_entity_id.

Tipo di risorsa

Descrizione della 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 di risorsa 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 di risorsa 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 di risorsa 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.

APPLICATION

Rappresenta una risorsa specificata dall'applicazione.

Non applicabile

METADATA

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 di risorsa 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 dell'unità di allocazione. Questo valore corrisponde a sys.allocation_units.allocation_unit_id.

Nella tabella seguente sono elencati i sottotipi associati a ogni tipo di risorsa.

ResourceSubType

Sincronizzazione

DATABASE.BULKOP_BACKUP_DB

Backup di database con operazioni bulk.

DATABASE.BULKOP_BACKUP_LOG

Backup di log di database con operazioni bulk.

DATABASE.DDL

Operazioni DDL (Data Definition Language) con operazioni relative a filegroup, come la rimozione.

DATABASE.STARTUP

Utilizzato per la sincronizzazione all'avvio del database.

TABLE.UPDSTATS

Aggiornamenti alle statistiche di una tabella.

TABLE.COMPILE

Compilazione di stored procedure.

TABLE.INDEX_OPERATION

Operazioni sugli indici.

HOBT.INDEX_REORGANIZE

Operazioni di riorganizzazione di heap o indici.

HOBT.BULK_OPERATION

Operazioni di caricamento bulk ottimizzate per gli heap con scansione simultanea nei livelli di isolamento snapshot, Read uncommitted e Read committed con controllo delle versioni delle righe.

ALLOCATION_UNIT.PAGE_COUNT

Statistiche relative al conteggio delle pagine delle unità di allocazione durante operazioni di rimozione posticipate.

METADATA.INDEXSTATS

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

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

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

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

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

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

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

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

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

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

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

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

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

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

METADATA.ASSYMMETRIC_KEY

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

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

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

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

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

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

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

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Nella tabella seguente viene descritto il formato della colonna resource_description per ogni tipo di risorsa.

Risorsa

Formato

Descrizione

DATABASE

Non applicabile

L'ID del database è già disponibile nella colonna resource_database_id.

FILE

<file_id>

ID del file rappresentato dalla risorsa.

OBJECT

<object_id>

ID dell'oggetto rappresentato dalla risorsa. Può essere qualsiasi oggetto elencato in sys.objects, non solo 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 dell'oggetto associato è 99, la risorsa rappresenta uno degli otto slot di pagine miste nella prima pagina IAM di una catena IAM.

APPLICATION

<DbPrincipalId>:<fino a 32 caratteri>:(<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 certi casi, è possibile visualizzare solo 2 caratteri perché la stringa completa non è più disponibile. 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 di risorsa HOBT è incluso come resource_associated_entity_id.

ALLOCATION_UNIT

Non applicabile

L'ID dell'unità di allocazione è incluso come resource_associated_entity_id.

METADATA.SEQUENCE

$seq_type = S, object_id = O

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

schema_id = S

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

principal_id = P

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

user_type_id = U

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

function_id = F

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

assembly_id = A

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

METADATA.ASSEMBLY_TOKEN

assembly_id = A, $token_id = T

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

$qname_id = Q

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

object_id = O, $qname_id = Q

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

service_contract_id = S

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

object_id = O

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

conversation_group_id = C

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

$hash = H1:H2:H3

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

certificate_id = C

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

database_id = D

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

principal_id = P

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

$hash = H1:H2:H3

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

credential_id = C

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

METADATA.INSTANTIATED_TYPE_HASH

user_type_id = U, hash = H1

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

$hash = H1:H2:H3

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.

Esempi

A. Utilizzo di sys.dm_tran_locks con altri strumenti

L'esempio seguente illustra uno scenario in cui un'operazione di aggiornamento è bloccata da un'altra transazione. Utilizzando sys.dm_tran_locks e altri strumenti, vengono fornite informazioni sulle risorse di blocco.

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

La query seguente visualizza informazioni sui blocchi. Il valore di <dbid> deve essere sostituito con il valore database_id di 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 visualizza 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. Collegamento tra informazioni di sessione e thread del sistema operativo

Nell'esempio seguente vengono restituite informazioni che associano un ID di sessione a un ID di thread di Windows. Le prestazioni del thread possono essere monitorate in Performance Monitor di Windows. Questa query non restituisce gli ID di sessione attualmente inattivi.

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