sys.dm_exec_sessions (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar en rad per autentiserad session på SQL Server. sys.dm_exec_sessions är en server-scope-vy som visar information om alla aktiva användaranslutningar och interna uppgifter. Denna information inkluderar klientversion, programnamn, inloggningstid för klienten, inloggningsanvändare, aktuell sessionsinställning och mer. Använd sys.dm_exec_sessions för att först se den aktuella systembelastningen och identifiera en session av intresse, och sedan lära dig mer om den sessionen genom att använda andra dynamiska hanteringsvyer eller dynamiska hanteringsfunktioner.

, , och sys.dm_exec_requests dynamiska sys.dm_exec_connectionssys.dm_exec_sessionshanteringsvyer mappas till den föråldrade sys.sysprocesses systemkompatibilitetsvyn.

Anmärkning

För att anropa detta från en dedikerad SQL-pool i Azure Synapse Analytics eller Analytics Platform System (PDW), se sys.dm_pdw_nodes_exec_sessions. För serverless SQL-pool eller Microsoft Fabric, använd sys.dm_exec_sessions.

Kolumnnamn Datatyp Beskrivning och versionsspecifik information
session_id smallint Identifierar den session som är associerad med varje aktiv primär anslutning. Inte nullbar.
login_time datetime Tid då sessionen upprättades. Inte nullbar. Sessioner som inte är helt inloggade när denna DMV frågas visas med inloggningstiden .1900-01-01
host_name nvarchar(128) Namnet på klientarbetsstationen som är specifik för en session. Värdet är NULL för interna sessioner. Nullable.

Säkerhetsnotis: Klientapplikationen anger arbetsstationens namn och kan ge felaktiga data. Lita inte på HOST_NAME den som en säkerhetsfunktion.
program_name nvarchar(128) Namnet på klientprogrammet som initierade sessionen. Värdet är NULL för interna sessioner. Nullable.
host_process_id int Process-ID för klientprogrammet som initierade sessionen. Värdet är NULL för interna sessioner. Nullable.
client_version int TDS-protokollversionen av gränssnittet som klienten använder för att ansluta till servern. Värdet är NULL för interna sessioner. Nullable.
client_interface_name nvarchar(32) Namn på bibliotek/drivrutin som används av klienten för att kommunicera med servern. Värdet är NULL för interna sessioner. Nullable.
security_id varbinary(85) Windows säkerhets-ID kopplat till inloggningen. Inte nullbar.
login_name nvarchar(128) SQL Server-inloggningsnamn som sessionen körs under. För det ursprungliga inloggningsnamnet som skapade sessionen, se original_login_name. Det kan vara ett SQL Server-autentiserat inloggningsnamn eller ett Windows-autentiserat domänanvändarnamn. Inte nullbar.
nt_domain nvarchar(128) Windows-domänen för klienten om sessionen använder Windows-autentisering eller en betrodd anslutning. Detta värde gäller NULL för interna sessioner och användare som inte är domänanvändare. Nullable.
nt_user_name nvarchar(128) Windows-användarnamn för klienten om sessionen använder Windows-autentisering eller en betrodd anslutning. Detta värde gäller NULL för interna sessioner och användare som inte är domänanvändare. Nullable.
status nvarchar(30) Status för sessionen. Möjliga värden:

Running - Kör för närvarande en eller flera förfrågningar
Sleeping - Kör för närvarande inga förfrågningar
Dormant - Sessionen återställdes på grund av anslutningspoolning och är nu i förinloggningsläge.
Preconnect - Session finns i Resource Governor-klassificeraren.

Inte nullbar.
context_info varbinary(128) CONTEXT_INFO för sessionen. Kontextinformationen ställs in av användaren med hjälp av satsen SET CONTEXT_INFO . Nullable.
cpu_time int CPU-tid, i millisekunder, används av denna session. Inte nullbar.
memory_usage int Antal 8-KB minnessidor som används av denna session. Inte nullbar.
total_scheduled_time int Total tid, i millisekunder, för vilken sessionen (förfrågningarna inom) var schemalagd för exekvering. Inte nullbar.
total_elapsed_time int Tid, i millisekunder, sedan sessionen etablerades. Inte nullbar.
endpoint_id int ID för slutpunkten som är kopplad till sessionen. Inte nullbar.
last_request_start_time datetime Tiden då den sista begäran om sessionen började. Denna gång inkluderar den pågående begäran. Inte nullbar.
last_request_end_time datetime Tidpunkten för den senaste slutförandet av en begäran om sessionen. Nullable.
reads bigint Antal läsningar som utförts, på begäran under denna session, under denna session. Inte nullbar.
writes bigint Antal skrivningar som utförts, enligt önskemål i denna session, under denna session. Inte nullbar.
logical_reads bigint Antal logiska läsningar utförda, av förfrågningar i denna session, under denna session. Inte nullbar.
is_user_process bit 0 om sessionen är en systemsession. Annars är det 1. Inte nullbar.
text_size int TEXTSIZE för sessionen. Inte nullbar.
language nvarchar(128) LANGUAGE för sessionen. Nullable.
date_format nvarchar(3) DATEFORMAT för sessionen. Nullable.
date_first smallint DATEFIRST för sessionen. Inte nullbar.
quoted_identifier bit QUOTED_IDENTIFIER för sessionen. Inte nullbar.
arithabort bit ARITHABORT för sessionen. Inte nullbar.
ansi_null_dflt_on bit ANSI_NULL_DFLT_ON för sessionen. Inte nullbar.
ansi_defaults bit ANSI_DEFAULTS för sessionen. Inte nullbar.
ansi_warnings bit ANSI_WARNINGS för sessionen. Inte nullbar.
ansi_padding bit ANSI_PADDING för sessionen. Inte nullbar.
ansi_nulls bit ANSI_NULLS för sessionen. Inte nullbar.
concat_null_yields_null bit CONCAT_NULL_YIELDS_NULL för sessionen. Inte nullbar.
transaction_isolation_level smallint Transaktionsisoleringsnivå för sessionen.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot

Inte nullbar.
lock_timeout int LOCK_TIMEOUT för sessionen. Värdet är i millisekunder. Inte nullbar.
deadlock_priority int DEADLOCK_PRIORITY för sessionen. Inte nullbar.
row_count bigint Antalet rader återkom under sessionen fram till denna punkt. Inte nullbar.
prev_error int ID för det senaste felet som returnerades i sessionen. Inte nullbar.
original_security_id varbinary(85) Windows säkerhets-ID som är kopplat till .original_login_name Inte nullbar.
original_login_name nvarchar(128) SQL Server-inloggningsnamn som klienten använde för att skapa denna session. Kan vara ett SQL Server-autentiserat inloggningsnamn, ett Windows-autentiserat domänanvändarnamn eller en användare av en innesluten databas. Sessionen kan ha gått igenom många implicita eller explicita kontextväxlingar efter den initiala anslutningen, till exempel om EXECUTE AS används. Inte nullbar.
last_successful_logon datetime Tiden för den senaste lyckade inloggningen innan original_login_name den aktuella sessionen började.
last_unsuccessful_logon datetime Tiden för det senaste misslyckade inloggningsförsöket original_login_name innan den nuvarande sessionen började.
unsuccessful_logons bigint Antal misslyckade inloggningsförsök för mellan original_login_name och last_successful_logonlogin_time.
group_id int ID för den arbetsbelastningsgrupp som den här sessionen tillhör. Inte nullbar.
database_id smallint ID för den aktuella databasen för varje session.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.

gäller för: SQL Server 2012 (11.x) och senare versioner.
authenticating_database_id int ID för databasen som autentiserar huvudnamnet. För inloggningar är 0värdet . För oberoende databasanvändare är värdet databas-ID för den inneslutna databasen.

gäller för: SQL Server 2012 (11.x) och senare versioner.
open_transaction_count int Antal öppna transaktioner per session.

gäller för: SQL Server 2012 (11.x) och senare versioner.
pdw_node_id int Identifieraren för noden som den här fördelningen är på.

Gäller för: Azure Synapse Analytics och Analytics Platform System (PDW).
page_server_reads bigint Antal sidserverläsningar utförda, genom förfrågningar i denna session, under denna session. Inte nullbar.

gäller för: Azure SQL Database Hyperscale.

Permissions

Alla kan se sin egen sessionsinformation.

I SQL Server 2019 (15.x) och tidigare versioner krävs VIEW SERVER STATE att alla sessioner på servern ses. I SQL Server 2022 (16.x) och senare versioner kräver VIEW SERVER PERFORMANCE STATE behörighet på servern.

I SQL Database krävs VIEW DATABASE STATE att alla anslutningar till den aktuella databasen ses. VIEW DATABASE STATE Kan inte beviljas i databasen master .

Anmärkningar

När serverkonfigurationsalternativet common criteria compliance enabled är aktiverat visas inloggningsstatistik i följande kolumner.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Om detta alternativ inte är aktiverat returnerar dessa kolumner nollvärden. För mer information om hur man sätter detta serverkonfigurationsalternativ, se Serverkonfiguration: common criteria compliance aktiverad.

Administratörsanslutningarna i Azure SQL Database ser en rad per autentiserad session. De sa sessioner som visas i resultset påverkar inte användarkvoten för sessioner. De icke-administratörsanslutningar ser endast information som rör deras databasanvändarsessioner.

På grund av skillnader i hur de spelas open_transaction_count in, kanske de inte stämmer överens sys.dm_tran_session_transactions.open_transaction_count.

Relations kardinaliteter

Från Till På/Ansök Förhållande
sys.dm_exec_sessions sys.dm_exec_requests session_id Ett-till-noll eller ett-till-många
sys.dm_exec_sessions sys.dm_exec_connections session_id Ett-till-noll eller ett-till-många
sys.dm_exec_sessions sys.dm_tran_session_transactions session_id Ett-till-noll eller ett-till-många
sys.dm_exec_sessions sys.dm_exec_cursors (session_id | 0) session_id CROSS APPLY

OUTER APPLY
Ett-till-noll eller ett-till-många
sys.dm_exec_sessions sys.dm_db_session_space_usage session_id One-to-one

Examples

A. Hitta användare som är anslutna till servern

Följande exempel hittar de användare som är anslutna till servern och returnerar antalet sessioner för varje användare.

SELECT login_name,
    COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;

B. Hitta långvariga markörer

Följande exempel visar vilka markörer som varit öppna under mer än en specifik tid, vem som skapade markörerna och vilken session markörerna är i.

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. Hitta inaktiva sessioner som har öppna transaktioner

Följande exempel hittar sessioner som har öppna transaktioner och är inaktiva. En idle-session är en som inte har någon begäran igång just nu.

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. Hitta information om en frågas egen koppling

Följande exempel samlar information om en frågas egen koppling:

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;