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.

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:

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