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 (csak dedikált SQL pool) vagy Analytics Platform System (PDW) nézetének megnevezéséhez lásd sys.dm_pdw_nodes_exec_sessions. Use sys.dm_exec_sessions for Azure Synapse Analytics (serverless SQL pool only) vagy Microsoft Fabric.

Oszlop név Adattípus Null értékű lehet Description
session_id smallint Nem Azonosítja az egyes aktív elsődleges kapcsolatokhoz társított munkamenetet.
login_time datetime Nem A munkamenet létrehozásának időpontja. 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) Igen Az ügyfél munkaállomásának neve, amely kifejezetten egy üléshez kapcsolódik. Az érték a belső munkamenetekhez tartozik NULL .

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) Igen A munkamenetet kezdeményező ügyfélprogram neve. Az érték a belső munkamenetekhez tartozik NULL .
host_process_id int Igen A folyamatazonosító a kliens programról, amely elindította a játékot. Az érték a belső munkamenetekhez tartozik NULL .
client_version int Igen a TDS protokoll verziója annak az interfésznek, amelyet az ügyfél használ a szerverhez való csatlakozáshoz. Az érték a belső munkamenetekhez tartozik NULL .
client_interface_name nvarchar(32) Igen 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 .
security_id varbinary(85) Nem A bejelentkezéshez tartozó Windows biztonsági azonosító.
login_name nvarchar(128) Nem 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.
nt_domain nvarchar(128) Igen 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 .
nt_user_name nvarchar(128) Igen 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 .
status nvarchar(30) Nem 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.
context_info varbinary(128) Igen CONTEXT_INFO a munkamenet értéke. A kontextusinformációt a felhasználó állítja be a SET CONTEXT_INFO utasítással.
cpu_time int Nem A CPU ideje, milliszekundumokban, amelyet ez az ülés használ.
memory_usage int Nem A 8 KB-os memória száma, amelyet ebben az ülésben használtak.
total_scheduled_time int Nem Az összes idő, milliszekundumokban, amelyre az ülések (a belső kérések) végrehajtásra ütemezték.
total_elapsed_time int Nem Az idő, milliszekundumokban, mióta az ülés megalapozott.
endpoint_id int Nem Az üléshez tartozó végpont azonosítója.
last_request_start_time datetime Nem 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.
last_request_end_time datetime Igen A munkamenetre vonatkozó kérés utolsó befejezésének időpontja.
reads bigint Nem A fizikai olvasások száma, kérések alapján ebben az ülésben, ebben az ülésben.
writes 1 bigint Nem A fizikai írások száma, kérések alapján ebben az ülésben, ebben az ülésben.
logical_reads bigint Nem A logikai olvasások száma, amelyeket kérések végeztek ebben az ülésben, ebben az ülésben.
is_user_process bit Nem 0 ha a munkamenet rendszermunkamenet. Ellenkező esetben ez 1.
text_size int Nem TEXTSIZE beállítást a munkamenethez.
language nvarchar(128) Igen LANGUAGE beállítást a munkamenethez.
date_format nvarchar(3) Igen DATEFORMAT beállítást a munkamenethez.
date_first smallint Nem DATEFIRST beállítást a munkamenethez.
quoted_identifier bit Nem QUOTED_IDENTIFIER beállítást a munkamenethez.
arithabort bit Nem ARITHABORT beállítást a munkamenethez.
ansi_null_dflt_on bit Nem ANSI_NULL_DFLT_ON beállítást a munkamenethez.
ansi_defaults bit Nem ANSI_DEFAULTS beállítást a munkamenethez.
ansi_warnings bit Nem ANSI_WARNINGS beállítást a munkamenethez.
ansi_padding bit Nem ANSI_PADDING beállítást a munkamenethez.
ansi_nulls bit Nem ANSI_NULLS beállítást a munkamenethez.
concat_null_yields_null bit Nem CONCAT_NULL_YIELDS_NULL beállítást a munkamenethez.
transaction_isolation_level smallint Nem A munkamenet tranzakcióelkülönítési szintje.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int Nem LOCK_TIMEOUT beállítást a munkamenethez. Az érték ezredmásodpercben van.
deadlock_priority int Nem DEADLOCK_PRIORITY beállítást a munkamenethez.
row_count bigint Nem Eddig a játékrész visszatért sorainak száma.
prev_error int Nem A munkamenet utolsó visszaadott hibájának azonosítója.
original_security_id varbinary(85) Nem Windows biztonsági azonosítója, amely a .original_login_name
original_login_name nvarchar(128) Nem 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 munkafolyamat számos implicit vagy explicit kontextusváltáson keresztül zajlott az első csatlakozás után, például ha az EXECUTE AS funkciót használjuk.
last_successful_logon datetime Igen Az utolsó sikeres bejelentkezés ideje a original_login_name jelenlegi játékalkalom kezdete előtt.
last_unsuccessful_logon datetime Igen Az utolsó sikertelen bejelentkezési kísérlet ideje a original_login_name jelenlegi ülés kezdete előtt.
unsuccessful_logons bigint Igen 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 Nem Annak a számítási feladatcsoportnak az azonosítója, amelyhez ez a munkamenet tartozik.
database_id smallint Nem 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 Igen 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 Nem Nyitott tranzakciók száma munkamenetenként.

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.
pdw_node_id int Nem 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 Nem A válaszadó olvasmányainak száma, amelyeket ebben az ülésben végzett kérések végeztek ebben az ülésben.

Az azure SQL Database rugalmas skálázásivonatkozik.
contained_availability_group_id uniqueidentifier Igen A tárolt elérhetőségi csoport azonosítója.

Érvényes: SQL Server 2025 (17.x) és újabb verziók.

1 Megadja, mikor jelölik meg egy oldalt koszosnak a pufferpoolban. Ez az érték nem egyenlő közvetlenül a tényleges írásokkal, mert ugyanazt az oldalt többször is meg lehet jelölni. Ezeket a számlálókat a tétel végén aggregálják.

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: Általános kritériumoknak megfelelési konfiguráció engedélyezése.

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;

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;