Megosztás a következőn keresztül:


sys.dm_exec_sessions (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Az SQL Serveren minden hitelesítésen egy sort ad vissza. sys.dm_exec_sessions egy szerver-hatókörű nézet, amely minden aktív felhasználói kapcsolatról és belső feladatról mutatja az információkat. Ez az információ magában foglalja a kliens verziót, kliens programnevét, kliens bejelentkezési idejét, bejelentkezési felhasználót, aktuális ülésbeállítást és még sok mást. sys.dm_exec_sessions Először a jelenlegi rendszerterhelés megtekintésére és az érdeklődési kör keresésére szolgáló ülés azonosítására, majd további információt szerezni az adott ülésről más dinamikus menedzsment nézetek vagy dinamikus menedzsment funkciók használatával.

A sys.dm_exec_connections, sys.dm_exec_sessions, és sys.dm_exec_requests dinamikus menedzsment nézetek a lejáratott sys.sysprocesses rendszerkompatibilitási nézethez fordulnak.

Megjegyzés:

Az Azure Synapse Analytics vagy Analytics Platform System (PDW) dedikált SQL pooljából való nevezéshez lásd sys.dm_pdw_nodes_exec_sessions. Serverless SQL poolhoz vagy Microsoft Fabrichez használd sys.dm_exec_sessions.

Oszlop név Adattípus Leírás és verzióspecifikus információk
session_id smallint Azonosítja az egyes aktív elsődleges kapcsolatokhoz társított munkamenetet. Nem null értékű.
login_time datetime A munkamenet létrehozásának időpontja. Nem null értékű. Azok a munkamenetek, amelyek még nem voltak teljesen bejelentkezve, amikor ezt a DMV-t lekérdezik, bejelentkezési időponttal 1900-01-01jelennek meg.
host_name nvarchar(128) Az ügyfél munkaállomásának neve, amely kifejezetten egy ülésre vonatkozik. Az érték a belső munkamenetekhez tartozik NULL . Nullable.

Biztonsági megjegyzés: Az ügyfélalkalmazás adja meg a munkaállomás nevét, és pontatlan adatokat is szolgáltathat. Ne támaszkodj HOST_NAME rá biztonsági funkcióként.
program_name nvarchar(128) A munkamenetet kezdeményező ügyfélprogram neve. Az érték a belső munkamenetekhez tartozik NULL . Nullable.
host_process_id int A folyamatazonosító a kliens programról, amely elindította a játékot. Az érték a belső munkamenetekhez tartozik NULL . Nullable.
client_version int A TDS protokoll verziója az interfésznek, amelyet a kliens használ a szerverhez való csatlakozáshoz. Az érték a belső munkamenetekhez tartozik NULL . Nullable.
client_interface_name nvarchar(32) Annak a könyvtárnak/illesztőprogramnak a neve, amelyet az ügyfél használ a kiszolgálóval való kommunikációhoz. Az érték a belső munkamenetekhez tartozik NULL . Nullable.
security_id varbinary(85) A bejelentkezéshez tartozó Windows biztonsági azonosító. Nem null értékű.
login_name nvarchar(128) AZ SQL Server bejelentkezési neve, amely alatt a munkamenet jelenleg fut. Az eredeti bejelentkezési névért, amely létrehozta az ülést, lásd original_login_name. Lehet SQL Server által hitelesített bejelentkezési név vagy Windows által hitelesített domain felhasználónév. Nem null értékű.
nt_domain nvarchar(128) Windows domain a kliensnek, ha a szekció Windows hitelesítést vagy megbízható kapcsolatot használ. Ez az érték belső munkamenetekre és nem domain felhasználókra vonatkozik NULL . Nullable.
nt_user_name nvarchar(128) A kliens Windows felhasználóneve, ha a munkamenet Windows hitelesítést vagy megbízható kapcsolatot használ. Ez az érték belső munkamenetekre és nem domain felhasználókra vonatkozik NULL . Nullable.
status nvarchar(30) A munkamenet állapota. Lehetséges értékek:

Running - Jelenleg egy vagy több kérést futtat
Sleeping - Jelenleg nem futtat kéréseket
Dormant - A munkamenetet a kapcsolat pooling miatt újraindították, és most prelogin állapotban van.
Preconnect - A Session a Resource Governor osztályzóban van.

Nem null értékű.
context_info varbinary(128) CONTEXT_INFO a munkamenet értéke. A kontextusinformációt a felhasználó állítja be a SET CONTEXT_INFO utasítással. Nullable.
cpu_time int A CPU ideje, milliszekundumokban, amelyet ez az ülés használ. Nem null értékű.
memory_usage int A 8 KB-os memória száma, amelyet ebben az ülésben használtak. Nem null értékű.
total_scheduled_time int Az összes idő, milliszekundumokban, amelyre az ülések (a belső kérések) végrehajtásra ütemezték. Nem null értékű.
total_elapsed_time int Az idő, milliszekundumokban, mióta az ülés megalapozott. Nem null értékű.
endpoint_id int Az üléshez tartozó végpont azonosítója. Nem null értékű.
last_request_start_time datetime Az az idő, amikor az ülés utolsó kérése elkezdődött. Ez az időszak tartalmazza a jelenleg végrehajtott kérést is. Nem null értékű.
last_request_end_time datetime A munkamenetre vonatkozó kérés utolsó befejezésének időpontja. Nullable.
reads bigint Az ülés során végzett olvasások száma, kérések alapján, ebben az ülésben. Nem null értékű.
writes bigint Az ülés során kérések alapján végrehajtott írások száma. Nem null értékű.
logical_reads bigint A logikai olvasások száma, amelyeket kérések végeztek ebben az ülésben, ebben az ülésben. Nem null értékű.
is_user_process bit 0 ha a munkamenet rendszermunkamenet. Ellenkező esetben ez 1. Nem null értékű.
text_size int TEXTSIZE beállítást a munkamenethez. Nem null értékű.
language nvarchar(128) LANGUAGE beállítást a munkamenethez. Nullable.
date_format nvarchar(3) DATEFORMAT beállítást a munkamenethez. Nullable.
date_first smallint DATEFIRST beállítást a munkamenethez. Nem null értékű.
quoted_identifier bit QUOTED_IDENTIFIER beállítást a munkamenethez. Nem null értékű.
arithabort bit ARITHABORT beállítást a munkamenethez. Nem null értékű.
ansi_null_dflt_on bit ANSI_NULL_DFLT_ON beállítást a munkamenethez. Nem null értékű.
ansi_defaults bit ANSI_DEFAULTS beállítást a munkamenethez. Nem null értékű.
ansi_warnings bit ANSI_WARNINGS beállítást a munkamenethez. Nem null értékű.
ansi_padding bit ANSI_PADDING beállítást a munkamenethez. Nem null értékű.
ansi_nulls bit ANSI_NULLS beállítást a munkamenethez. Nem null értékű.
concat_null_yields_null bit CONCAT_NULL_YIELDS_NULL beállítást a munkamenethez. Nem null értékű.
transaction_isolation_level smallint A munkamenet tranzakcióelkülönítési szintje.

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

Nem null értékű.
lock_timeout int LOCK_TIMEOUT beállítást a munkamenethez. Az érték ezredmásodpercben van. Nem null értékű.
deadlock_priority int DEADLOCK_PRIORITY beállítást a munkamenethez. Nem null értékű.
row_count bigint Eddig a játékrész visszatért sorainak száma. Nem null értékű.
prev_error int A munkamenet utolsó visszaadott hibájának azonosítója. Nem null értékű.
original_security_id varbinary(85) Windows biztonsági azonosítója, amely a .original_login_name Nem null értékű.
original_login_name nvarchar(128) SQL Server bejelentkezési neve, amelyet az ügyfél használt a munkamenet létrehozásához. Lehet SQL Server által hitelesített bejelentkezési név, Windows által hitelesített domain felhasználónév vagy egy beépített adatbázis-felhasználó. A szekció sok implicit vagy explicit kontextusváltáson ment keresztül az első csatlakozás után, például ha az EXECUTE AS (EXECUTE AS ) használatra kerül. Nem null értékű.
last_successful_logon datetime Az utolsó sikeres bejelentkezés ideje a original_login_name jelenlegi játékalkalom kezdete előtt.
last_unsuccessful_logon datetime Az utolsó sikertelen bejelentkezési kísérlet ideje a original_login_name jelenlegi ülés kezdete előtt.
unsuccessful_logons bigint A sikertelen bejelentkezési kísérletek száma a original_login_namelast_successful_logon és login_timeközötti részre.
group_id int Annak a számítási feladatcsoportnak az azonosítója, amelyhez ez a munkamenet tartozik. Nem null értékű.
database_id smallint Az aktuális adatbázis azonosítója minden munkamenethez.

Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül.

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.
authenticating_database_id int Az egyszerűséget hitelesítő adatbázis azonosítója. A bejelentkezések esetében az érték .0 A tartalmazott adatbázis felhasználói számára az érték a tartalmazott adatbázis adatbázis-azonosítója.

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.
open_transaction_count int Nyitott tranzakciók száma munkamenetenként.

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.
pdw_node_id int Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

Alkalmazható: Azure Synapse Analytics és Analytics Platform System (PDW).
page_server_reads bigint A válaszadó olvasmányainak száma, amelyeket ebben az ülésben végzett kérések végeztek ebben az ülésben. Nem null értékű.

Az azure SQL Database rugalmas skálázásivonatkozik.

Permissions

Mindenki láthatja a saját ülésinformációit.

Az SQL Server 2019 (15.x) és korábbi verziókban minden VIEW SERVER STATE munkamenetet meg kell nézni a szerveren. Az SQL Server 2022 -ben (16.x) és újabb verziókban engedélyre van szükség VIEW SERVER PERFORMANCE STATE a kiszolgálón.

Az SQL Database-ben minden VIEW DATABASE STATE kapcsolatot meg kell nézni az aktuális adatbázishoz. VIEW DATABASE STATE Nem lehet megadni az master adatbázisban.

Megjegyzések

Amikor a common criteria compliance enabled szerver konfigurációs opció engedélyezve van, a bejelentkezési statisztikák a következő oszlopokban jelennek meg.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Ha ez az opció nincs engedélyezve, ezek az oszlopok null értékeket adnak vissza. További információért a szerverkonfigurációs opció beállításáról lásd: Server configuration: common criteria compliance enabled.

Az Azure SQL Database-en admin kapcsolatok egy sort látnak minden hitelesítési alkalomonként. Az eredménycsomagban megjelenő sa ülések nem befolyásolják a felhasználói kvótát. A nem adminisztrátor kapcsolatok csak az adatbázis felhasználói munkameneteikkel kapcsolatos információkat látják.

A rögzítés módjai eltérések miatt open_transaction_count lehet, hogy nem egyeznek sys.dm_tran_session_transactions.open_transaction_count.

Kapcsolati számosságok

Ettől kezdve Jelentkezés/Jelentkezés Kapcsolat
sys.dm_exec_sessions sys.dm_exec_requests session_id Egy-nulla vagy egy-több-
sys.dm_exec_sessions sys.dm_exec_connections session_id Egy-nulla vagy egy-több-
sys.dm_exec_sessions sys.dm_tran_session_transactions session_id Egy-nulla vagy egy-több-
sys.dm_exec_sessions sys.dm_exec_cursors (session_id | 0) session_id CROSS APPLY

OUTER APPLY
Egy-nulla vagy egy-több-
sys.dm_exec_sessions sys.dm_db_session_space_usage session_id One-to-one

Példák

A. Keress olyan felhasználókat, akik csatlakoznak a szerverhez

A következő példa megtalálja azokat a felhasználókat, akik csatlakoztak a szerverhez, és visszaadja az egyes felhasználók számára a munkamenetek számát.

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

B. Keress hosszú futású kurzorokat

A következő példa megmutatja, hogy a kurzorok hosszabb ideig voltak nyitva, kik hozták létre a kurzorokat, és milyen ülésen vannak a kurzorok.

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. Keress olyan üres üléseket, amelyekben nyitott tranzakciók vannak

A következő példa olyan üléseket talál, amelyek nyitott tranzakciókkal rendelkeznek és tétlenek. A tétlen ülés az, amelynél jelenleg nincs kérés futva.

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. Találj információt egy lekérdezés saját kapcsolatáról

Az alábbi példa gyűjt információkat egy lekérdezés saját kapcsolatáról:

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;