Condividi tramite


sys.dm_exec_sessions (Transact-SQL)

Restituisce una riga per ogni sessione autenticata in SQL Server. sys.dm_exec_sessions è una vista con ambito server che contiene informazioni su tutte le attività interne e le connessioni utente attive. Tali informazioni includono la versione del client, il nome del programma client, l'ora di accesso del client, l'utente che esegue l'accesso, l'impostazione di sessione corrente e altro. Utilizzare sys.dm_exec_sessions prima di tutto per visualizzare il carico di sistema corrente e individuare una sessione di interesse, quindi per raccogliere ulteriori informazioni su tale sessione utilizzando altre viste o funzioni a gestione dinamica.

È stato eseguito il mapping delle DMV sys.dm_exec_connections, sys.dm_exec_sessions e sys.dm_exec_requests alla tabella di sistema sys.sysprocesses.

Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente).

Nome colonna

Tipo di dati

Descrizione

session_id

smallint

Identifica la sessione associata a ogni connessione principale attiva. Non ammette valori Null.

login_time

datetime

Data e ora in cui è stata stabilita la sessione. Non ammette valori Null.

host_name

nvarchar(128)

Nome della workstation client specifica di una sessione. Il valore è NULL per le sessioni interne. Ammette valori Null.

Nota sulla sicurezzaNota sulla protezione

L'applicazione client fornisce il nome della workstation e può indicare dati non accurati.Non considerare HOST_NAME una funzionalità di sicurezza.

program_name

nvarchar(128)

Nome del programma client che ha iniziato la sessione. Il valore è NULL per le sessioni interne. Ammette valori Null.

host_process_id

int

ID di processo del programma client che ha iniziato la sessione. Il valore è NULL per le sessioni interne. Ammette valori Null.

client_version

int

Versione del protocollo TDS dell'interfaccia utilizzata dal client per connettersi al server. Il valore è NULL per le sessioni interne. Ammette valori Null.

client_interface_name

nvarchar(32)

Nome del protocollo utilizzato dal client per connettersi al server. Il valore è NULL per le sessioni interne. Ammette valori Null.

security_id

varbinary(85)

ID di sicurezza di Microsoft Windows associato all'account di accesso. Non ammette valori Null.

login_name

nvarchar(128)

Nome dell'account di accesso di SQL Server con cui la sessione è attualmente in esecuzione. Per il nome dell'account di accesso originale che ha creato la sessione, vedere original_login_name. Può essere un nome di un account di accesso autenticato di SQL Server o un nome di un utente di dominio autenticato di Windows. Non ammette valori Null.

nt_domain

nvarchar(128)

Dominio di Windows per il client se la sessione utilizza l'autenticazione di Windows o una connessione trusted. Il valore è NULL per le sessioni interne e per gli utenti non di dominio. Ammette i valori Null.

Si applica a: SQL Server 2008 tramite SQL Server 2014.

nt_user_name

nvarchar(128)

Nome utente di Windows per il client se la sessione utilizza l'autenticazione di Windows o una connessione trusted. Il valore è NULL per le sessioni interne e per gli utenti non di dominio. Ammette i valori Null.

Si applica a: SQL Server 2008 tramite SQL Server 2014.

status

nvarchar(30)

Stato della sessione. I valori possibili sono:

  • Running: una o più richieste sono in esecuzione

  • Sleeping: nessuna richiesta è in esecuzione

  • Dormant: la sessione è stata reimpostata a causa del pool di connessioni e si trova ora nello stato di inattività precedente all'accesso.

  • Preconnect: la sessione si trova nel classificatore di Resource Governor.

Non ammette valori Null.

context_info

varbinary(128)

Valore di CONTEXT_INFO per la sessione. Le informazioni di contesto vengono impostate dall'utente tramite l'istruzione SET CONTEXT_INFO. Ammette valori Null.

cpu_time

int

Tempo della CPU, espresso in millisecondi, utilizzato dalla sessione. Non ammette valori Null.

memory_usage

int

Numero di pagine da 8 KB utilizzate dalla sessione. Non ammette valori Null.

total_scheduled_time

int

Tempo totale, espresso in millisecondi, pianificato per l'esecuzione delle richieste nella sessione. Non ammette valori Null.

total_elapsed_time

int

Tempo, espresso in millisecondi, trascorso dal momento in cui è stata stabilita la sessione. Non ammette valori Null.

endpoint_id

int

ID dell'endpoint associato alla sessione. Non ammette valori Null.

last_request_start_time

datetime

Data e ora in cui è iniziata l'ultima richiesta nella sessione. Include la richiesta attualmente in esecuzione. Non ammette valori Null.

last_request_end_time

datetime

Data e ora dell'ultimo completamento di una richiesta nella sessione. Ammette valori Null.

reads

bigint

Numero di letture eseguite dalle richieste della sessione durante la sessione. Non ammette valori Null.

writes

bigint

Numero di scritture eseguite dalle richieste della sessione durante la sessione. Non ammette valori Null.

logical_reads

bigint

Numero di letture logiche eseguite nella sessione. Non ammette valori Null.

is_user_process

bit

0 se la sessione è una sessione di sistema. Negli altri casi è 1. Non ammette valori Null.

text_size

int

Impostazione di TEXTSIZE per la sessione. Non ammette valori Null.

language

nvarchar(128)

Impostazione di LANGUAGE per la sessione. Ammette valori Null.

date_format

nvarchar(3)

Impostazione DATEFORMAT per la sessione. Ammette valori Null.

date_first

smallint

Impostazione DATEFIRST per la sessione. Non ammette valori Null.

quoted_identifier

bit

Impostazione QUOTED_IDENTIFIER per la sessione. Non ammette valori Null.

arithabort

bit

Impostazione ARITHABORT per la sessione. Non ammette valori Null.

ansi_null_dflt_on

bit

Impostazione ANSI_NULL_DFLT_ON per la sessione. Non ammette valori Null.

ansi_defaults

bit

Impostazione ANSI_DEFAULTS per la sessione. Non ammette valori Null.

ansi_warnings

bit

Impostazione ANSI_WARNINGS per la sessione. Non ammette valori Null.

ansi_padding

bit

Impostazione ANSI_PADDING per la sessione. Non ammette valori Null.

ansi_nulls

bit

Impostazione ANSI_NULLS per la sessione. Non ammette valori Null.

concat_null_yields_null

bit

Impostazione CONCAT_NULL_YIELDS_NULL per la sessione. Non ammette valori Null.

transaction_isolation_level

smallint

Livello di isolamento delle transazioni della sessione.

0 = Non specificato

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Snapshot

Non ammette valori Null.

lock_timeout

int

Impostazione LOCK_TIMEOUT per la sessione. Il valore è espresso in millisecondi. Non ammette valori Null.

deadlock_priority

int

Impostazione DEADLOCK_PRIORITY per la sessione. Non ammette valori Null.

row_count

bigint

Numero di righe restituite nella sessione fino a questo punto. Non ammette valori Null.

prev_error

int

ID dell'ultimo errore restituito nella sessione. Non ammette valori Null.

original_security_id

varbinary(85)

ID di sicurezza di Microsoft Windows associato a original_login_name. Non ammette valori Null.

original_login_name

nvarchar(128)

Nome dell'account di accesso di SQL Server utilizzato dal client per creare la sessione. Può essere un nome di un account di accesso autenticato di SQL Server, un nome di un utente di dominio autenticato di Windows o un utente di un database indipendente. Si noti che nella sessione potrebbero essersi verificati numerosi cambi di contesto impliciti o espliciti dopo la connessione iniziale, ad esempio in caso di utilizzo di EXECUTE AS. Non ammette valori Null.

last_successful_logon

datetime

Ora dell'ultimo accesso riuscito di original_login_name prima dell'avvio della sessione corrente.

Si applica a: SQL Server 2008 tramite SQL Server 2014.

last_unsuccessful_logon

datetime

Ora dell'ultimo accesso non riuscito di original_login_name prima dell'avvio della sessione corrente.

Si applica a: SQL Server 2008 tramite SQL Server 2014.

unsuccessful_logons

bigint

Numero di tentativi di accesso non riusciti per original_login_name tra last_successful_logon e login_time.

Si applica a: SQL Server 2008 tramite SQL Server 2014.

group_id

int

ID del gruppo di carico di lavoro a cui appartiene la sessione. Non ammette i valori Null.

database_id

smallint

ID del database corrente per ogni sessione.

Si applica a: SQL Server 2012 tramite SQL Server 2014.

authenticating_database_id

int

ID del database che ha eseguito l'autenticazione dell'entità. Per gli account di accesso, il valore sarà 0. Per gli utenti di database indipendenti, il valore sarà l'ID del database indipendente.

Si applica a: SQL Server 2012 tramite SQL Server 2014.

open_transaction_count

int

Numero di transazioni aperte per sessione.

Si applica a: SQL Server 2012 tramite SQL Server 2014.

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE nel server.

Nota

Se si dispone dell'autorizzazione VIEW SERVER STATE per il server, è possibile visualizzare tutte le sessioni in esecuzione nell'istanza di SQL Server. In caso contrario, è possibile visualizzare solo la sessione corrente.

Osservazioni

Quando l'opzione di configurazione del server common criteria compliance enabled viene abilitata, e statistiche relative agli accessi vengono visualizzate nelle colonne seguenti.

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Se l'opzione non è abilitata, tali colonne restituiranno valori Null. Per ulteriori informazioni sull'impostazione di questa opzione di configurazione del server, vedere Opzione di configurazione del server common criteria compliance enabled.

Cardinalità delle relazioni

Da

A

In/Si applica a

Relazione

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Uno-a-zero o uno-a-molti

sys.dm_exec_sessions

sys.dm_exec_connections

session_id

Uno-a-zero o uno-a-molti

sys.dm_exec_sessions

sys.dm_tran_session_transactions

session_id

Uno-a-zero o uno-a-molti

sys.dm_exec_sessions

sys.dm_exec_cursors(session_id | 0)

session_id CROSS APPLY

OUTER APPLY

Uno-a-zero o uno-a-molti

sys.dm_exec_sessions

sys.dm_db_session_space_usage

session_id

Uno-a-uno

Esempi

A.Individuazione degli utenti connessi al server

Nell'esempio seguente vengono individuati gli utenti connessi al server e viene restituito il numero di sessioni per ogni utente.

SELECT login_name ,COUNT(session_id) AS session_count 
FROM sys.dm_exec_sessions 
GROUP BY login_name;

B.Individuazione dei cursori con esecuzione prolungata

Nell'esempio seguente vengono individuati i cursori aperti per un periodo più lungo di quello specificato, l'utente che ha creato i cursori e la sessione in cui i cursori sono attivi.

USE master;
GO
SELECT creation_time ,cursor_id 
    ,name ,c.session_id ,login_name 
FROM sys.dm_exec_cursors(0) AS c 
JOIN sys.dm_exec_sessions AS s 
   ON c.session_id = s.session_id 
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

C.Individuazione delle sessioni inattive con transazioni aperte

Nell'esempio seguente vengono individuate le sessioni inattive con transazioni aperte. Si definisce inattiva una sessione per cui non sono in esecuzione richieste.

SELECT s.* 
FROM sys.dm_exec_sessions AS s
WHERE EXISTS 
    (
    SELECT * 
    FROM sys.dm_tran_session_transactions AS t
    WHERE t.session_id = s.session_id
    )
    AND NOT EXISTS 
    (
    SELECT * 
    FROM sys.dm_exec_requests AS r
    WHERE r.session_id = s.session_id
    );

D.Ricerca di informazioni su una connessione query personalizzata

Query tipica per raccogliere informazioni su una connessione query personalizzata.

SELECT 
    c.session_id, c.net_transport, c.encrypt_option, 
    c.auth_scheme, s.host_name, s.program_name, 
    s.client_interface_name, s.login_name, s.nt_domain, 
    s.nt_user_name, s.original_login_name, c.connect_time, 
    s.login_time 
FROM sys.dm_exec_connections AS c
JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;

Vedere anche

Riferimento

Funzioni e viste a gestione dinamica (Transact-SQL)

Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)