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.
|
||
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.
|
||
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.
|
||
status |
nvarchar(30) |
Stato della sessione. I valori possibili sono:
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.
|
||
last_unsuccessful_logon |
datetime |
Ora dell'ultimo accesso non riuscito di original_login_name prima dell'avvio della sessione corrente.
|
||
unsuccessful_logons |
bigint |
Numero di tentativi di accesso non riusciti per original_login_name tra last_successful_logon e login_time.
|
||
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.
|
||
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.
|
||
open_transaction_count |
int |
Numero di transazioni aperte per sessione.
|
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)