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:

Chcete-li to vyvolat z dedikovaného SQL poolu v Azure Synapse Analytics nebo Analytics Platform System (PDW), viz sys.dm_pdw_nodes_exec_sessions. Pro serverless SQL pool nebo Microsoft Fabric použijte sys.dm_exec_sessions.

Název sloupce Datový typ Popis a informace specifické pro verzi
session_id smallint Identifikuje relaci přidruženou ke každému aktivnímu primárnímu připojení. Není nulovatelný.
login_time datetime Čas vytvoření relace Není nulovatelný. 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) Název klientské pracovní stanice, která je specifická pro danou relaci. Hodnota je NULL určená pro interní relace. Nullable.

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) Název klientského programu, který inicioval relaci. Hodnota je NULL určená pro interní relace. Nullable.
host_process_id int ID procesu klientského programu, který relaci zahájil. Hodnota je NULL určená pro interní relace. Nullable.
client_version int Verze rozhraní protokolu TDS, kterou klient používá k připojení k serveru. Hodnota je NULL určená pro interní relace. Nullable.
client_interface_name nvarchar(32) Název knihovny/ovladače, který klient používá ke komunikaci se serverem. Hodnota je NULL určená pro interní relace. Nullable.
security_id varbinary(85) Windows Security ID spojené s přihlášením. Není nulovatelný.
login_name nvarchar(128) 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. Není nulovatelný.
nt_domain nvarchar(128) 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. Nullable.
nt_user_name nvarchar(128) 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. Nullable.
status nvarchar(30) 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.

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

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

Není nulovatelný.
lock_timeout int LOCK_TIMEOUT nastavení pro relaci. Hodnota je v milisekundách. Není nulovatelný.
deadlock_priority int DEADLOCK_PRIORITY nastavení pro relaci. Není nulovatelný.
row_count bigint Počet řádků vrácených během sezení až do tohoto okamžiku. Není nulovatelný.
prev_error int ID poslední chyby vrácené v relaci Není nulovatelný.
original_security_id varbinary(85) Windows Security ID, které je spojeno s .original_login_name Není nulovatelný.
original_login_name nvarchar(128) 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. Relace mohla například po počátečním spojení projít mnoha implicitními nebo explicitními přepínáním kontextu, pokud je použito EXECUTE AS . Není nulovatelný.
last_successful_logon datetime Čas posledního úspěšného přihlášení před original_login_name začátkem aktuální relace.
last_unsuccessful_logon datetime Č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 Počet neúspěšných pokusů o přihlášení pro mezi original_login_name a last_successful_logonlogin_time.
group_id int ID skupiny úloh, do které tato relace patří. Není nulovatelný.
database_id smallint 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 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 Počet otevřených transakcí na relaci

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

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

Platí pro: Azure SQL Database Hyperscale.

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 Server configuration: common criteria compliance enabled (povoleno dodržování common criteria).

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;
GO

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;