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.
Le viste a gestione dinamica sys.dm_exec_connections, sys.dm_exec_sessions e sys.dm_exec_requests sono mappate alla tabella di sistema sys.sysprocesses.
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.
ValoreVersione di TDS Versione di SQL Server
04.2SQL Server 6.x
16.0SQL Server 6.x
27.0SQL Server 7.0
37.1SQL Server 2000
47.1 revisione 1SQL Server 2000 con Service Pack 1
57.2SQL Server 2005
67.3SQL Server 2008
|
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 protezione 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 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 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 di DATEFORMAT per la sessione. Ammette valori Null. |
date_first |
smallint |
Impostazione di DATEFIRST per la sessione. Non ammette valori Null. |
quoted_identifier |
bit |
Impostazione di QUOTED_IDENTIFIER per la sessione. Non ammette valori Null. |
arithabort |
bit |
Impostazione di ARITHABORT per la sessione. Non ammette valori Null. |
ansi_null_dflt_on |
bit |
Impostazione di ANSI_NULL_DFLT_ON per la sessione. Non ammette valori Null. |
ansi_defaults |
bit |
Impostazione di ANSI_DEFAULTS per la sessione. Non ammette valori Null. |
ansi_warnings |
bit |
Impostazione di ANSI_WARNINGS per la sessione. Non ammette valori Null. |
ansi_padding |
bit |
Impostazione di ANSI_PADDING per la sessione. Non ammette valori Null. |
ansi_nulls |
bit |
Impostazione di ANSI_NULLS per la sessione. Non ammette valori Null. |
concat_null_yields_null |
bit |
Impostazione di 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 di LOCK_TIMEOUT per la sessione. Il valore è espresso in millisecondi. Non ammette valori Null. |
deadlock_priority |
int |
Impostazione di 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 protezione 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 o un nome di un utente di dominio autenticato di Windows. 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 |
Data e ora dell'ultimo accesso riuscito di original_login_name prima dell'avvio della sessione corrente. |
last_unsuccessful_logon |
datetime |
Data e 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 valori Null. |
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
Statistiche relative agli accessi per la conformità ai criteri comuni
Quando viene attivata l'opzione common criteria compliance enabled mediante la stored procedure sp_configure, le statistiche relative agli accessi vengono archiviate e visualizzate nelle colonne di sys.dm_exec_sessions seguenti:
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
Se questa opzione di configurazione del server non è attivata, queste colonne di sys.dm_exec_sessions restituiranno valori Null. Per ulteriori informazioni sull'impostazione di questa opzione di configurazione del server, vedere Opzione 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
);
Cronologia modifiche
Aggiornamento del contenuto |
---|
Aggiunta di valori alla descrizione della colonna client_version. |