Sdílet prostřednictvím


sys.dm_exec_sessions (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací jeden řádek na ověřenou relaci na SQL Serveru. sys.dm_exec_sessions je pohled v serverovém rozsahu, který zobrazuje informace o všech aktivních uživatelských připojeních a interních úkolech. Tyto informace zahrnují verzi klienta, název klientského programu, čas přihlášení klienta, uživatele přihlášení, aktuální nastavení relace a další. Nejprve použijte sys.dm_exec_sessions k zobrazení aktuálního zatížení systému a identifikaci zajímavé relace, a poté k získání dalších informací o této relaci pomocí jiných dynamických manažerských pohledů nebo funkcí dynamického řízení.

Pohledy sys.dm_exec_connectionssys.dm_exec_sessions, , sys.dm_exec_requests a dynamické správy se mapují na zastaralý pohled kompatibility systému sys.sysprocesses.

Poznámka:

Pro označení tohoto pohledu z Azure Synapse Analytics (pouze dedikovaný SQL pool) nebo Analytics Platform System (PDW) viz sys.dm_pdw_nodes_exec_sessions. Použít sys.dm_exec_sessions pro Azure Synapse Analytics (pouze serverless SQL pool) nebo Microsoft Fabric.

Název sloupce Datový typ Nullovatelný Description
session_id smallint Ne Identifikuje relaci přidruženou ke každému aktivnímu primárnímu připojení.
login_time datetime Ne Čas vytvoření relace Relace, které v době dotazu na toto DMV ještě nebyly úplně přihlášeny, jsou zobrazeny s časem přihlášení .1900-01-01
host_name nvarchar(128) Ano Název klientské pracovní stanice, která je specifická pro danou relaci. Hodnota je NULL určená pro interní relace.

Bezpečnostní poznámka: Klientská aplikace poskytuje název pracovní stanice a může poskytovat nepřesná data. Nespoléhejte na HOST_NAME něj jako na bezpečnostní prvek.
program_name nvarchar(128) Ano Název klientského programu, který inicioval relaci. Hodnota je NULL určená pro interní relace.
host_process_id int Ano ID procesu klientského programu, který relaci zahájil. Hodnota je NULL určená pro interní relace.
client_version int Ano Verze rozhraní protokolu TDS, kterou klient používá k připojení k serveru. Hodnota je NULL určená pro interní relace.
client_interface_name nvarchar(32) Ano Název knihovny/ovladače, který klient používá ke komunikaci se serverem. Hodnota je NULL určená pro interní relace.
security_id varbinary(85) Ne Windows Security ID spojené s přihlášením.
login_name nvarchar(128) Ne Přihlašovací jméno SQL Serveru, ve kterém se relace právě spouští. Pro původní přihlašovací jméno, které relaci vytvořilo, viz original_login_name. Může to být přihlášení ověřené SQL Server nebo uživatelské jméno ověřené Windows doménou.
nt_domain nvarchar(128) Ano Windows doména pro klienta, pokud relace používá Windows Authentication nebo důvěryhodné připojení. Tato hodnota platí NULL pro interní relace a uživatele mimo doménu.
nt_user_name nvarchar(128) Ano Windows uživatelské jméno klienta, pokud relace používá Windows Authentication nebo důvěryhodné připojení. Tato hodnota platí NULL pro interní relace a uživatele mimo doménu.
status nvarchar(30) Ne Stav relace. Možné hodnoty:

Running - V současnosti spuštěný jeden nebo více požadavků
Sleeping - V současnosti neběží žádné požadavky
Dormant - Relace byla resetována kvůli poolování spojení a nyní je v prelogin stavu.
Preconnect - Session je v klasifikátoru Resource Governor.
context_info varbinary(128) Ano CONTEXT_INFO hodnota pro relaci. Kontextové informace nastavuje uživatel pomocí příkazu SET CONTEXT_INFO .
cpu_time int Ne CPU čas v milisekundách, využitý touto relací.
memory_usage int Ne Počet 8 KB stránek paměti využitých touto relací.
total_scheduled_time int Ne Celkový čas, v milisekundách, po který byla relace (požadavky vnitro) naplánována k vykonání.
total_elapsed_time int Ne Čas v milisekundách od začátku sezení.
endpoint_id int Ne ID koncového bodu spojeného s relací.
last_request_start_time datetime Ne Čas, kdy začala poslední žádost na sezení. Tento čas zahrnuje právě vykonávaný požadavek.
last_request_end_time datetime Ano Čas posledního dokončení požadavku v relaci.
reads bigint Ne Počet fyzických čtení provedených na základě požadavků v této sezení během této sekce.
writes 1 bigint Ne Počet fyzických zápisů provedených na základě požadavků během této relace.
logical_reads bigint Ne Počet logických čtení provedených požadavky v této relaci během této relace.
is_user_process bit Ne 0 pokud je relace systémová relace. Jinak je to 1.
text_size int Ne TEXTSIZE nastavení pro relaci.
language nvarchar(128) Ano LANGUAGE nastavení pro relaci.
date_format nvarchar(3) Ano DATEFORMAT nastavení pro relaci.
date_first smallint Ne DATEFIRST nastavení pro relaci.
quoted_identifier bit Ne QUOTED_IDENTIFIER nastavení pro relaci.
arithabort bit Ne ARITHABORT nastavení pro relaci.
ansi_null_dflt_on bit Ne ANSI_NULL_DFLT_ON nastavení pro relaci.
ansi_defaults bit Ne ANSI_DEFAULTS nastavení pro relaci.
ansi_warnings bit Ne ANSI_WARNINGS nastavení pro relaci.
ansi_padding bit Ne ANSI_PADDING nastavení pro relaci.
ansi_nulls bit Ne ANSI_NULLS nastavení pro relaci.
concat_null_yields_null bit Ne CONCAT_NULL_YIELDS_NULL nastavení pro relaci.
transaction_isolation_level smallint Ne Úroveň izolace transakcí relace.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int Ne LOCK_TIMEOUT nastavení pro relaci. Hodnota je v milisekundách.
deadlock_priority int Ne DEADLOCK_PRIORITY nastavení pro relaci.
row_count bigint Ne Počet řádků vrácených během sezení až do tohoto okamžiku.
prev_error int Ne ID poslední chyby vrácené v relaci
original_security_id varbinary(85) Ne Windows Security ID, které je spojeno s .original_login_name
original_login_name nvarchar(128) Ne Přihlašovací jméno SQL Serveru, které klient použil k vytvoření této relace. Může to být přihlašovací jméno ověřené SQL Serverem, uživatelské jméno domény ověřené Windows nebo uzavřený uživatel databáze. Například relace mohla proběhnout mnoha implicitními nebo explicitními přepínáním kontextu po počátečním spojení, například pokud je použito EXECUTE AS .
last_successful_logon datetime Ano Čas posledního úspěšného přihlášení před original_login_name začátkem aktuální relace.
last_unsuccessful_logon datetime Ano Čas posledního neúspěšného pokusu o přihlášení před original_login_name začátkem aktuální relace.
unsuccessful_logons bigint Ano Počet neúspěšných pokusů o přihlášení pro mezi original_login_name a last_successful_logonlogin_time.
group_id int Ne ID skupiny úloh, do které tato relace patří.
database_id smallint Ne ID aktuální databáze pro každou relaci.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.

platí pro: SQL Server 2012 (11.x) a novější verze.
authenticating_database_id int Ano ID databáze ověřující objekt zabezpečení. Pro přihlášení je 0hodnota . Pro uživatele databáze s omezením je hodnota ID databáze obsažené databáze.

platí pro: SQL Server 2012 (11.x) a novější verze.
open_transaction_count int Ne Počet otevřených transakcí na relaci

platí pro: SQL Server 2012 (11.x) a novější verze.
pdw_node_id int Ne Identifikátor uzlu, na který je tato distribuce zapnutá.

Vztahuje se na: Azure Synapse Analytics a Analytics Platform System (PDW).
page_server_reads bigint Ne Počet přečtených stránek na serveru provedených požadavky v této relaci během této relace.

Platí pro: Azure SQL Database Hyperscale.
contained_availability_group_id uniqueidentifier Ano ID skupiny dostupnosti.

Platí na: SQL Server 2025 (17.x) a novější verze.

1 Specifikuje, kdy je stránka v buffer poolu označena jako špinavá. Tato hodnota přímo neodpovídá skutečným zápisům, protože stejná stránka může být označena vícekrát. Tyto čítače se na konci dávky agregují.

Povolení

Každý si může prohlédnout informace o své relaci.

V SQL Server 2019 (15.x) a starších verzích je nutné VIEW SERVER STATE vidět všechny relace na serveru. V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění k serveru.

V SQL databázi je potřeba VIEW DATABASE STATE vidět všechna spojení s aktuální databází. VIEW DATABASE STATE Nelze je v databázi master udělit.

Poznámky

Když common criteria compliance enabled je možnost konfigurace serveru povolena, statistiky přihlášení se zobrazují v následujících sloupcích.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Pokud tato možnost není povolena, tyto sloupce vrátí nulové hodnoty. Pro více informací o nastavení této možnosti konfigurace serveru viz Povolit konfiguraci souladu s běžnými kritérii.

Administrátorská připojení v Azure SQL Database vidí jeden řádek na ověřenou relaci. Relace sa , které se objevují ve výsledcích, nemají žádný vliv na uživatelskou kvótu pro relace. Neadministrátorská připojení vidí pouze informace týkající se uživatelských relací jejich databáze.

Kvůli rozdílům v tom, jak jsou zaznamenány, open_transaction_count nemusí sys.dm_tran_session_transactionsodpovídat .open_transaction_count.

Kardinality relací

Od To Přihlásit se Vztah
sys.dm_exec_sessions sys.dm_exec_requests session_id Jedna ku nule nebo jedna ku mnohým
sys.dm_exec_sessions sys.dm_exec_connections session_id Jedna ku nule nebo jedna ku mnohým
sys.dm_exec_sessions sys.dm_tran_session_transactions session_id Jedna ku nule nebo jedna ku mnohým
sys.dm_exec_sessions sys.dm_exec_cursors (session_id | 0) session_id CROSS APPLY
OUTER APPLY
Jedna ku nule nebo jedna ku mnohým
sys.dm_exec_sessions sys.dm_db_session_space_usage session_id One-to-one

Examples

A. Najděte uživatele, kteří jsou připojeni k serveru

Následující příklad najde uživatele připojené k serveru a vrátí počet relací pro každého uživatele.

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

B. Najděte dlouhotrvající kurzory

Následující příklad ukazuje kurzory, které byly otevřené déle než určitou dobu, kdo kurzory vytvořil a na jaké relaci se kurzory nacházejí.

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. Najděte nečinné relace, kde jsou otevřené transakce

Následující příklad najde relace, které mají otevřené transakce a jsou nečinné. Nečinná relace je taková, kdy momentálně neběží žádný požadavek.

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. Najděte informace o vlastním propojení dotazu

Následující příklad shromažďuje informace o vlastním spojení dotazu:

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;