sys.dm_exec_sessions (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric Warehouse in Microsoft Fabric
Restituisce una riga per sessione autenticata in SQL Server. sys.dm_exec_sessions
è una visualizzazione dell'ambito server che mostra informazioni su tutte le connessioni utente attive e le attività interne. 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. Usare sys.dm_exec_sessions
per visualizzare prima il carico di sistema corrente e per identificare una sessione di interesse e quindi ottenere altre informazioni su tale sessione usando altre viste a gestione dinamica o funzioni di gestione dinamica.
Le sys.dm_exec_connections
viste a gestione dinamica , sys.dm_exec_sessions
e e sys.dm_exec_requests
vengono mappate alla vista di compatibilità del sistema sys.sysprocesses deprecata.
Nota
Per chiamare questa operazione dal pool SQL dedicato in Azure Synapse Analytics o dal sistema della piattaforma di analisi (PDW), vedere sys.dm_pdw_nodes_exec_sessions. Per il pool SQL serverless o Microsoft Fabric usare sys.dm_exec_sessions
.
Nome colonna | Tipo di dati | Descrizione e informazioni specifiche della versione |
---|---|---|
session_id | smallint | Identifica la sessione associata a ogni connessione principale attiva. Non ammette i valori NULL. |
login_time | datetime | Data e ora in cui è stata stabilita la sessione. Non ammette i valori NULL. Le sessioni che non hanno completato l'accesso, al momento in cui viene eseguita una query sulla DMV, vengono visualizzate con un'ora di accesso di 1900-01-01 . |
host_name | nvarchar(128) | Nome della workstation client specifica di una sessione. Il valore è NULL per le sessioni interne. Ammette i valori Null. Nota sulla sicurezza: l'applicazione client fornisce il nome della workstation e può fornire dati non accurati. Non fare affidamento su HOST_NAME come funzionalità di sicurezza. |
program_name | nvarchar(128) | Nome del programma client che ha iniziato la sessione. Il valore è NULL per le sessioni interne. Ammette i 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 i 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 i valori Null. |
client_interface_name | nvarchar(32) | Nome della libreria/driver utilizzato dal client per comunicare con il server. Il valore è NULL per le sessioni interne. Ammette i valori Null. |
security_id | varbinary(85) | ID di sicurezza di Microsoft Windows associato all'account di accesso. Non ammette i valori NULL. |
login_name | nvarchar(128) | Nome dell'account di accesso SQL Server con cui la sessione è attualmente in esecuzione. Per il nome di accesso originale che ha creato la sessione, vedere original_login_name . Può essere un nome di accesso autenticato di SQL Server o un nome utente di dominio autenticato di Windows. Non ammette i valori NULL. |
nt_domain | nvarchar(128) | Si applica a: SQL Server 2008 (10.0.x) e versioni successive 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) | Si applica a: SQL Server 2008 (10.0.x) e versioni successive 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. |
stato | nvarchar(30) | Stato della sessione. Valori possibili: In esecuzione : attualmente in esecuzione una o più richieste Sospensione - Attualmente non è in esecuzione alcuna richiesta Inattivo : la sessione è stata reimpostata a causa del pool di connessioni ed è ora in stato di prelogin. Preconnect : la sessione si trova nel classificatore di Resource Governor. Non ammette i valori NULL. |
context_info | varbinary(128) | Valore di CONTEXT_INFO per la sessione. Le informazioni sul contesto sono impostate dall'utente tramite l'istruzione SET CONTEXT_INFO . Ammette i valori Null. |
cpu_time | int | Tempo CPU, in millisecondi, usato da questa sessione. Non ammette i valori NULL. |
memory_usage | int | Numero di pagine da 8 KB utilizzate dalla sessione. Non ammette i valori NULL. |
total_scheduled_time | int | Tempo totale, espresso in millisecondi, pianificato per l'esecuzione delle richieste nella sessione. Non ammette i valori NULL. |
total_elapsed_time | int | Tempo, espresso in millisecondi, trascorso dal momento in cui è stata stabilita la sessione. Non ammette i valori NULL. |
endpoint_id | int | ID dell'endpoint associato alla sessione. Non ammette i 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 i valori NULL. |
last_request_end_time | datetime | Data e ora dell'ultimo completamento di una richiesta nella sessione. Ammette i valori Null. |
reads | bigint | Numero di letture eseguite dalle richieste della sessione durante la sessione. Non ammette i valori NULL. |
writes | bigint | Numero di scritture eseguite dalle richieste della sessione durante la sessione. Non ammette i valori NULL. |
logical_reads | bigint | Numero di letture logiche eseguite, da richieste in questa sessione, durante questa sessione. Non ammette i valori NULL. |
is_user_process | bit | 0 se la sessione è una sessione di sistema. In caso contrario, è 1. Non ammette i valori NULL. |
text_size | int | Impostazione di TEXTSIZE per la sessione. Non ammette i valori NULL. |
lingua | nvarchar(128) | Impostazione di LANGUAGE per la sessione. Ammette i valori Null. |
date_format | nvarchar(3) | Impostazione DATEFORMAT per la sessione. Ammette i valori Null. |
date_first | smallint | Impostazione DATEFIRST per la sessione. Non ammette i valori NULL. |
quoted_identifier | bit | Impostazione QUOTED_IDENTIFIER per la sessione. Non ammette i valori NULL. |
arithabort | bit | Impostazione ARITHABORT per la sessione. Non ammette i valori NULL. |
ansi_null_dflt_on | bit | Impostazione ANSI_NULL_DFLT_ON per la sessione. Non ammette i valori NULL. |
ansi_defaults | bit | Impostazione ANSI_DEFAULTS per la sessione. Non ammette i valori NULL. |
ansi_warnings | bit | Impostazione ANSI_WARNINGS per la sessione. Non ammette i valori NULL. |
ansi_padding | bit | Impostazione ANSI_PADDING per la sessione. Non ammette i valori NULL. |
ansi_nulls | bit | Impostazione ANSI_NULLS per la sessione. Non ammette i valori NULL. |
concat_null_yields_null | bit | Impostazione CONCAT_NULL_YIELDS_NULL per la sessione. Non ammette i valori NULL. |
transaction_isolation_level | smallint | Livello di isolamento delle transazioni della sessione. 0 = Non specificato 1 = ReadUncommitted 2 = ReadCommitted 3 = RepeatableRead 4 = Serializable 5 = Snapshot Non ammette i valori NULL. |
lock_timeout | int | Impostazione LOCK_TIMEOUT per la sessione. Il valore è espresso in millisecondi. Non ammette i valori NULL. |
deadlock_priority | int | Impostazione DEADLOCK_PRIORITY per la sessione. Non ammette i valori NULL. |
row_count | bigint | Numero di righe restituite nella sessione fino a questo punto. Non ammette i valori NULL. |
prev_error | int | ID dell'ultimo errore restituito nella sessione. Non ammette i valori NULL. |
original_security_id | varbinary(85) | ID di sicurezza di Microsoft Windows associato a original_login_name . Non ammette i valori NULL. |
original_login_name | nvarchar(128) | Nome di accesso di SQL Server usato dal client per creare questa sessione. Può essere un nome di accesso autenticato di SQL Server, un nome utente di dominio autenticato di Windows o un utente di database indipendente. La sessione potrebbe aver eseguito molte opzioni di contesto implicite o esplicite dopo la connessione iniziale. Ad esempio, se viene usato EXECUTE AS . Non ammette i valori NULL. |
last_successful_logon | datetime | Si applica a: SQL Server 2008 (10.0.x) e versioni successive Data e ora dell'ultimo accesso riuscito di original_login_name prima dell'avvio della sessione corrente. |
last_unsuccessful_logon | datetime | Si applica a: SQL Server 2008 (10.0.x) e versioni successive Data e ora dell'ultimo accesso non riuscito di original_login_name prima dell'avvio della sessione corrente. |
unsuccessful_logons | bigint | Si applica a: SQL Server 2008 (10.0.x) e versioni successive Numero di tentativi di accesso non riusciti per l'oggetto original_login_name last_successful_logon tra 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 | Si applica a: SQL Server 2012 (11.x) e versioni successive ID del database corrente per ogni sessione. In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico. |
authenticating_database_id | int | Si applica a: SQL Server 2012 (11.x) e versioni successive 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 | Si applica a: SQL Server 2012 (11.x) e versioni successive Numero di transazioni aperte per sessione. |
pdw_node_id | int | Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) Identificatore del nodo in cui è attiva la distribuzione. |
page_server_reads | bigint | Si applica a: database SQL di Azure Hyperscale Numero di letture del server di pagine eseguite, da richieste in questa sessione, durante questa sessione. Non ammette i valori NULL. |
Autorizzazioni
Tutti possono visualizzare le proprie informazioni sulla sessione.
SQL Server: richiede VIEW SERVER STATE
l'autorizzazione per SQL Server per visualizzare tutte le sessioni nel server.
database SQL: Richiede VIEW DATABASE STATE
di visualizzare tutte le connessioni al database corrente. VIEW DATABASE STATE
non può essere concesso nel master
database.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.
Osservazioni:
Quando l'opzione di configurazione del server abilitata per la conformità ai criteri comuni è abilitata , le statistiche di accesso vengono visualizzate nelle colonne seguenti.
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
Se questa opzione non è abilitata, queste colonne restituiranno valori Null. Per altre informazioni su come impostare questa opzione di configurazione del server, vedere l'opzione di configurazione del server common criteria compliance enabled.
Le connessioni di amministratore in database SQL di Azure vedere una riga per ogni sessione autenticata. Le sessioni "sa" visualizzate nel set di risultati non hanno alcun effetto sulla quota utente per le sessioni. Le connessioni non amministrative visualizzeranno solo le informazioni correlate alle sessioni utente del database.
A causa delle differenze nel modo in cui vengono registrate, open_transaction_count
potrebbe non corrispondere a sys.dm_tran_session_transactions
.open_transaction_count
.
Cardinalità delle relazioni
Da | Per | In/Si applica a | Relationship |
---|---|---|---|
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
R. Trovare gli 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. Trovare cursori a 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
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;
GO
C. Trovare 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. Trovare informazioni su una connessione personalizzata per le query
L'esempio seguente raccoglie informazioni sulla connessione di una query:
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
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per