Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
Geeft één rij terug per geauthenticeerde sessie op SQL Server.
sys.dm_exec_sessions is een server-scope view die informatie toont over alle actieve gebruikersverbindingen en interne taken. Deze informatie omvat de clientversie, de naam van het clientprogramma, de inlogtijd van de client, de inloggebruikers, de huidige sessie-instelling en meer. Gebruik sys.dm_exec_sessions om eerst de huidige systeembelasting te bekijken en een sessie van interesse te identificeren, en vervolgens meer informatie over die sessie te leren door gebruik te maken van andere dynamische beheerweergaven of dynamische beheerfuncties.
De sys.dm_exec_connections, sys.dm_exec_sessions, en sys.dm_exec_requests dynamische beheerweergaven worden gekoppeld aan de verouderde sys.sysprocesses systeemcompatibiliteitsweergave.
Opmerking
Om dit aan te roepen vanuit een dedicated SQL-pool in Azure Synapse Analytics of Analytics Platform System (PDW), zie sys.dm_pdw_nodes_exec_sessions. Gebruik voor serverless SQL pool of Microsoft Fabric sys.dm_exec_sessions.
| Kolomnaam | Gegevenstype | Beschrijving en versiespecifieke informatie |
|---|---|---|
session_id |
smallint | Identificeert de sessie die is gekoppeld aan elke actieve primaire verbinding. Niet nullwaarde. |
login_time |
datetime | Tijdstip waarop de sessie tot stand is gebracht. Niet nullwaarde. Sessies die niet volledig zijn ingelogd op het moment dat deze DMV wordt geraadpleegd, worden getoond met een inlogtijd van 1900-01-01. |
host_name |
nvarchar(128) | Naam van het clientwerkstation dat specifiek is voor een sessie. De waarde is NULL voor interne sessies. Nullable.Beveiligingsnotitie: De clientapplicatie geeft de naam van het werkstation en kan onnauwkeurige gegevens leveren. Vertrouw er niet op HOST_NAME als beveiligingsfunctie. |
program_name |
nvarchar(128) | Naam van het clientprogramma dat de sessie heeft gestart. De waarde is NULL voor interne sessies. Nullable. |
host_process_id |
int | Proces-ID van het clientprogramma dat de sessie heeft gestart. De waarde is NULL voor interne sessies. Nullable. |
client_version |
int | TDS-protocolversie van de interface die door de client wordt gebruikt om verbinding te maken met de server. De waarde is NULL voor interne sessies. Nullable. |
client_interface_name |
nvarchar(32) | Naam van bibliotheek/stuurprogramma dat door de client wordt gebruikt om met de server te communiceren. De waarde is NULL voor interne sessies. Nullable. |
security_id |
varbinary(85) | Windows Security ID gekoppeld aan de login. Niet nullwaarde. |
login_name |
nvarchar(128) | Sql Server-aanmeldingsnaam waaronder de sessie momenteel wordt uitgevoerd. Voor de oorspronkelijke inlognaam die de sessie heeft aangemaakt, zie original_login_name. Kan een SQL Server-geauthenticeerde loginnaam zijn of een Windows-geauthenticeerde domeingebruikersnaam. Niet nullwaarde. |
nt_domain |
nvarchar(128) | Windows-domein voor de client als de sessie gebruikmaakt van Windows-authenticatie of een vertrouwde verbinding. Deze waarde is NULL bedoeld voor interne sessies en niet-domeingebruikers. Nullable. |
nt_user_name |
nvarchar(128) | Windows-gebruikersnaam voor de client als de sessie Windows-authenticatie of een vertrouwde verbinding gebruikt. Deze waarde is NULL bedoeld voor interne sessies en niet-domeingebruikers. Nullable. |
status |
nvarchar(30) | Status van de sessie. Mogelijke waarden:Running - Momenteel één of meer verzoeken uitvoerenSleeping - Momenteel geen verzoeken draaienDormant - De sessie is gereset vanwege verbindingspooling en bevindt zich nu in prelogin-status.Preconnect - Sessie is in de Resource Governor-classifier.Niet nullwaarde. |
context_info |
varbinary(128) |
CONTEXT_INFO waarde voor de sessie. De contextinformatie wordt door de gebruiker ingesteld met behulp van de SET CONTEXT_INFO-instructie . Nullable. |
cpu_time |
int | CPU-tijd, in milliseconden, gebruikt door deze sessie. Niet nullwaarde. |
memory_usage |
int | Aantal 8-KB pagina's geheugen dat door deze sessie wordt gebruikt. Niet nullwaarde. |
total_scheduled_time |
int | Totale tijd, in milliseconden, waarvoor de sessie (verzoeken binnen) waren gepland voor uitvoering. Niet nullwaarde. |
total_elapsed_time |
int | Tijd, in milliseconden, sinds de sessie werd ingesteld. Niet nullwaarde. |
endpoint_id |
int | ID van het eindpunt dat aan de sessie is gekoppeld. Niet nullwaarde. |
last_request_start_time |
datetime | Tijd waarop het laatste verzoek van de sessie begon. Deze keer omvat het momenteel uitgevoerde verzoek. Niet nullwaarde. |
last_request_end_time |
datetime | Tijd van de laatste voltooiing van een aanvraag voor de sessie. Nullable. |
reads |
bigint | Aantal leesopdrachten uitgevoerd, op verzoek in deze sessie, tijdens deze sessie. Niet nullwaarde. |
writes |
bigint | Aantal schrijfopdrachten uitgevoerd op verzoek in deze sessie, tijdens deze sessie. Niet nullwaarde. |
logical_reads |
bigint | Aantal logische reads uitgevoerd door verzoeken in deze sessie, tijdens deze sessie. Niet nullwaarde. |
is_user_process |
bit |
0 als de sessie een systeemsessie is. Anders is het 1. Niet nullwaarde. |
text_size |
int |
TEXTSIZE instelling voor de sessie. Niet nullwaarde. |
language |
nvarchar(128) |
LANGUAGE instelling voor de sessie. Nullable. |
date_format |
nvarchar(3) |
DATEFORMAT instelling voor de sessie. Nullable. |
date_first |
smallint |
DATEFIRST instelling voor de sessie. Niet nullwaarde. |
quoted_identifier |
bit |
QUOTED_IDENTIFIER instelling voor de sessie. Niet nullwaarde. |
arithabort |
bit |
ARITHABORT instelling voor de sessie. Niet nullwaarde. |
ansi_null_dflt_on |
bit |
ANSI_NULL_DFLT_ON instelling voor de sessie. Niet nullwaarde. |
ansi_defaults |
bit |
ANSI_DEFAULTS instelling voor de sessie. Niet nullwaarde. |
ansi_warnings |
bit |
ANSI_WARNINGS instelling voor de sessie. Niet nullwaarde. |
ansi_padding |
bit |
ANSI_PADDING instelling voor de sessie. Niet nullwaarde. |
ansi_nulls |
bit |
ANSI_NULLS instelling voor de sessie. Niet nullwaarde. |
concat_null_yields_null |
bit |
CONCAT_NULL_YIELDS_NULL instelling voor de sessie. Niet nullwaarde. |
transaction_isolation_level |
smallint | Niveau van transactieisolatie van de sessie.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = SnapshotNiet nullwaarde. |
lock_timeout |
int |
LOCK_TIMEOUT instelling voor de sessie. De waarde is in milliseconden. Niet nullwaarde. |
deadlock_priority |
int |
DEADLOCK_PRIORITY instelling voor de sessie. Niet nullwaarde. |
row_count |
bigint | Het aantal rijen kwam tot dat moment terug in de sessie. Niet nullwaarde. |
prev_error |
int | Id van de laatste fout die tijdens de sessie is geretourneerd. Niet nullwaarde. |
original_security_id |
varbinary(85) | Windows security ID die gekoppeld is aan de original_login_name. Niet nullwaarde. |
original_login_name |
nvarchar(128) | De SQL Server-inlognaam die de client gebruikte om deze sessie aan te maken. Kan een geauthenticeerde inlognaam van een SQL Server zijn, een Windows-geauthenticeerde domeingebruikersnaam, of een gebruiker van een gesloten database. De sessie kan na de initiële verbinding veel impliciete of expliciete contextwisselingen hebben doorgemaakt, bijvoorbeeld als EXECUTE AS wordt gebruikt. Niet nullwaarde. |
last_successful_logon |
datetime | Tijd van de laatste succesvolle logon voordat original_login_name de huidige sessie begon. |
last_unsuccessful_logon |
datetime | Tijd van de laatste mislukte inlogpoging voordat original_login_name de huidige sessie begon. |
unsuccessful_logons |
bigint | Aantal mislukte inlogpogingen voor de original_login_name tussen de last_successful_logon en login_time. |
group_id |
int | Id van de workloadgroep waartoe deze sessie behoort. Niet nullwaarde. |
database_id |
smallint | Id van de huidige database voor elke sessie. In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server. Van toepassing op: SQL Server 2012 (11.x) en latere versies. |
authenticating_database_id |
int | Id van de database die de principal authenticeert. Voor aanmeldingen is 0de waarde . Voor ingesloten databasegebruikers is de waarde de database-id van de ingesloten database.Van toepassing op: SQL Server 2012 (11.x) en latere versies. |
open_transaction_count |
int | Aantal openstaande transacties per sessie. Van toepassing op: SQL Server 2012 (11.x) en latere versies. |
pdw_node_id |
int | De id voor het knooppunt waarop deze distributie zich bevindt. Van toepassing op: Azure Synapse Analytics en Analytics Platform System (PDW). |
page_server_reads |
bigint | Aantal pagina-serverlezingen uitgevoerd door verzoeken in deze sessie tijdens deze sessie. Niet nullwaarde. Van toepassing op: Azure SQL Database Hyperscale. |
Permissions
Iedereen kan zijn eigen sessie-informatie zien.
In SQL Server 2019 (15.x) en eerdere versies is het vereist VIEW SERVER STATE dat alle sessies op de server worden gezien. Voor SQL Server 2022 (16.x) en latere versies is een machtiging op de server vereist VIEW SERVER PERFORMANCE STATE .
In SQL Database moet VIEW DATABASE STATE je alle verbindingen naar de huidige database zien.
VIEW DATABASE STATE Kan niet worden toegekend in de master database.
Opmerkingen
Wanneer de common criteria compliance enabled serverconfiguratieoptie is ingeschakeld, worden de logonstatistieken weergegeven in de volgende kolommen.
last_successful_logonlast_unsuccessful_logonunsuccessful_logons
Als deze optie niet is ingeschakeld, geven deze kolommen nullwaarden terug. Voor meer informatie over hoe je deze serverconfiguratieoptie kunt instellen, zie Server configuration: common criteria compliance enabled.
De beheerdersverbindingen in Azure SQL Database zien één rij per geauthenticeerde sessie. De sa sessies die in de resultaatset verschijnen, hebben geen invloed op de gebruikersquota voor sessies. De niet-beheerdersverbindingen zien alleen informatie die gerelateerd is aan hun databasegebruikerssessies.
Door verschillen in hoe ze worden opgenomen, open_transaction_count kunnen ze misschien niet overeenkomen sys.dm_tran_session_transactions.open_transaction_count.
Relatiekardinaliteiten
| Van | Tot | Op/Aanvullen | Relatie |
|---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests | session_id |
Eén op nul of één op veel |
sys.dm_exec_sessions |
sys.dm_exec_connections | session_id |
Eén op nul of één op veel |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions | session_id |
Eén op nul of één op veel |
sys.dm_exec_sessions |
sys.dm_exec_cursors (session_id | 0) |
session_id CROSS APPLYOUTER APPLY |
Eén op nul of één op veel |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage | session_id |
One-to-one |
Voorbeelden
Eén. Zoek gebruikers die verbonden zijn met de server
Het volgende voorbeeld vindt de gebruikers die verbonden zijn met de server en geeft het aantal sessies voor elke gebruiker terug.
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B. Vind langlopende cursors
Het volgende voorbeeld toont de cursors die langer dan een specifieke tijd open waren, wie de cursors heeft gemaakt en in welke sessie de cursors zich bevinden.
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. Zoek idle sessies met open transacties
Het volgende voorbeeld vindt sessies met open transacties en die inactief zijn. Een idle-sessie is er een waarbij momenteel geen verzoek draait.
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. Vind informatie over de eigen verbinding van een zoekopdracht
Het volgende voorbeeld verzamelt informatie over de eigen verbinding van een 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;