Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Zwraca jeden wiersz na każdą uwierzytelnioną sesję na SQL Server.
sys.dm_exec_sessions to widok w zakresie serwera, który pokazuje informacje o wszystkich aktywnych połączeniach użytkowników i zadaniach wewnętrznych. Informacje te obejmują wersję klienta, nazwę programu, czas logowania klienta, użytkownika logowania, aktualne ustawienie sesji i inne. Najpierw użyj sys.dm_exec_sessions do zobaczenia aktualnego obciążenia systemu i zidentyfikowania interesującej sesji, a następnie do poznania informacji o tej sesji, korzystając z innych dynamicznych widoków zarządzania lub funkcji dynamicznego zarządzania.
Widoki sys.dm_exec_connectionszarządzania , sys.dm_exec_sessions, oraz sys.dm_exec_requests dynamiczne mapują się na przestarzały widok zgodności systemu sys.sysprocesses .
Uwaga / Notatka
Aby wywołać to z dedykowanej puli SQL w Azure Synapse Analytics lub Analytics Platform System (PDW), zobacz sys.dm_pdw_nodes_exec_sessions. Dla serwerless SQL pool lub Microsoft Fabric użyj sys.dm_exec_sessions.
| Nazwa kolumny | Typ danych | Opis i informacje specyficzne dla wersji |
|---|---|---|
session_id |
smallint | Identyfikuje sesję skojarzona z każdym aktywnym połączeniem podstawowym. Nie może być null. |
login_time |
datetime | Godzina ustanowienia sesji. Nie może być null. Sesje, które nie zostały całkowicie zalogowane w momencie zapytania tego DMV, są wyświetlane z czasem logowania .1900-01-01 |
host_name |
nvarchar(128) | Nazwa stanowiska roboczego klienta specyficznego dla sesji. Wartość dotyczy NULL sesji wewnętrznych. Nullable.Uwaga bezpieczeństwa: Aplikacja kliencka podaje nazwę stacji roboczej i może dostarczać niedokładne dane. Nie polegaj na HOST_NAME nim jako na funkcji bezpieczeństwa. |
program_name |
nvarchar(128) | Nazwa programu klienckiego, który zainicjował sesję. Wartość dotyczy NULL sesji wewnętrznych. Nullable. |
host_process_id |
int | ID procesu programu klienckiego, który zainicjował sesję. Wartość dotyczy NULL sesji wewnętrznych. Nullable. |
client_version |
int | Protokół TDS jako wersja interfejsu używana przez klienta do łączenia się z serwerem. Wartość dotyczy NULL sesji wewnętrznych. Nullable. |
client_interface_name |
nvarchar(32) | Nazwa biblioteki/sterownika używanego przez klienta do komunikowania się z serwerem. Wartość dotyczy NULL sesji wewnętrznych. Nullable. |
security_id |
varbinary(85) | Identyfikator bezpieczeństwa Windows powiązany z logowaniem. Nie może być null. |
login_name |
nvarchar(128) | Nazwa logowania programu SQL Server, w ramach której jest obecnie uruchamiana sesja. Oryginalną nazwę logowania, która utworiła sesję, zobacz original_login_name. Może to być domena uwierzytelniona przez SQL Server lub domena uwierzytelniona przez Windows. Nie może być null. |
nt_domain |
nvarchar(128) | Domena Windows dla klienta, jeśli sesja korzysta z uwierzytelniania Windows lub zaufanego połączenia. Ta wartość dotyczy NULL sesji wewnętrznych i użytkowników spoza domeny. Nullable. |
nt_user_name |
nvarchar(128) | Nazwa użytkownika Windows dla klienta, jeśli sesja korzysta z uwierzytelniania Windows lub zaufanego połączenia. Ta wartość dotyczy NULL sesji wewnętrznych i użytkowników spoza domeny. Nullable. |
status |
nvarchar(30) | Stan sesji. Możliwe wartości:Running - Obecnie uruchamia się jedno lub więcej żądańSleeping - Obecnie nie wykonuje żadnych żądańDormant - Sesja została zresetowana z powodu puli połączeń i jest teraz w stanie przed logowaniem.Preconnect - Sesja znajduje się w klasyfikatorze Gubernatora Zasobów.Nie może być null. |
context_info |
varbinary(128) |
CONTEXT_INFO wartość sesji. Informacje kontekstowe są ustalane przez użytkownika za pomocą instrukcji SET CONTEXT_INFO . Nullable. |
cpu_time |
int | Czas CPU, w milisekundach, wykorzystany przez tę sesję. Nie może być null. |
memory_usage |
int | Liczba 8-KB stron pamięci wykorzystanych przez tę sesję. Nie może być null. |
total_scheduled_time |
int | Całkowity czas, w milisekundach, na który sesja (żądania w obrębie) była zaplanowana do wykonania. Nie może być null. |
total_elapsed_time |
int | Czas w milisekundach od momentu sesji. Nie może być null. |
endpoint_id |
int | ID punktu końcowego powiązanego z sesją. Nie może być null. |
last_request_start_time |
datetime | Czas, w którym rozpoczęła się ostatnia prośba na sesji. Ten czas obejmuje obecnie wykonywane żądanie. Nie może być null. |
last_request_end_time |
datetime | Godzina ostatniego ukończenia żądania w sesji. Nullable. |
reads |
bigint | Liczba odczytów wykonanych przez żądania w tej sesji podczas tej sesji. Nie może być null. |
writes |
bigint | Liczba zapisów wykonanych przez żądania w tej sesji podczas tej sesji. Nie może być null. |
logical_reads |
bigint | Liczba odczytów logicznych wykonanych przez żądania w tej sesji podczas tej sesji. Nie może być null. |
is_user_process |
bit |
0 jeśli sesja jest sesją systemową. W przeciwnym razie 1. Nie może być null. |
text_size |
int |
TEXTSIZE ustawienie dla sesji. Nie może być null. |
language |
nvarchar(128) |
LANGUAGE ustawienie dla sesji. Nullable. |
date_format |
nvarchar(3) |
DATEFORMAT ustawienie dla sesji. Nullable. |
date_first |
smallint |
DATEFIRST ustawienie dla sesji. Nie może być null. |
quoted_identifier |
bit |
QUOTED_IDENTIFIER ustawienie dla sesji. Nie może być null. |
arithabort |
bit |
ARITHABORT ustawienie dla sesji. Nie może być null. |
ansi_null_dflt_on |
bit |
ANSI_NULL_DFLT_ON ustawienie dla sesji. Nie może być null. |
ansi_defaults |
bit |
ANSI_DEFAULTS ustawienie dla sesji. Nie może być null. |
ansi_warnings |
bit |
ANSI_WARNINGS ustawienie dla sesji. Nie może być null. |
ansi_padding |
bit |
ANSI_PADDING ustawienie dla sesji. Nie może być null. |
ansi_nulls |
bit |
ANSI_NULLS ustawienie dla sesji. Nie może być null. |
concat_null_yields_null |
bit |
CONCAT_NULL_YIELDS_NULL ustawienie dla sesji. Nie może być null. |
transaction_isolation_level |
smallint | Poziom izolacji transakcji sesji.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = SnapshotNie może być null. |
lock_timeout |
int |
LOCK_TIMEOUT ustawienie dla sesji. Wartość jest wyrażona w milisekundach. Nie może być null. |
deadlock_priority |
int |
DEADLOCK_PRIORITY ustawienie dla sesji. Nie może być null. |
row_count |
bigint | Liczba rzędów powróconych podczas sesji do tego momentu. Nie może być null. |
prev_error |
int | Identyfikator ostatniego błędu zwróconego w sesji. Nie może być null. |
original_security_id |
varbinary(85) | Identyfikator bezpieczeństwa Windows powiązany z .original_login_name Nie może być null. |
original_login_name |
nvarchar(128) | Nazwa logowania do SQL Server, której klient użył do utworzenia tej sesji. Może to być uwierzytelniona nazwa logowania SQL Server, domena użytkownika z Windows lub użytkownik z zamkniętą bazą danych. Sesja mogła przejść przez wiele niejawnych lub jawnych zmian kontekstu po początkowym połączeniu, na przykład, jeśli użyto EXECUTE AS . Nie może być null. |
last_successful_logon |
datetime | Czas ostatniego udanego logowania przed original_login_name rozpoczęciem obecnej sesji. |
last_unsuccessful_logon |
datetime | Czas ostatniej nieudanej próby logowania przed original_login_name rozpoczęciem obecnej sesji. |
unsuccessful_logons |
bigint | Liczba nieudanych prób logowania dla pomiędzy original_login_name i last_successful_logonlogin_time. |
group_id |
int | Identyfikator grupy obciążeń, do której należy ta sesja. Nie może być null. |
database_id |
smallint | Identyfikator bieżącej bazy danych dla każdej sesji. W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego. Dotyczy: SQL Server 2012 (11.x) i nowsze wersje. |
authenticating_database_id |
int | Identyfikator bazy danych uwierzytelniającej podmiot zabezpieczeń. W przypadku logowań wartość to 0. W przypadku użytkowników zawartej bazy danych wartość to identyfikator bazy danych zawartej bazy danych.Dotyczy: SQL Server 2012 (11.x) i nowsze wersje. |
open_transaction_count |
int | Liczba otwartych transakcji na sesję. Dotyczy: SQL Server 2012 (11.x) i nowsze wersje. |
pdw_node_id |
int | Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. Dotyczy do: Azure Synapse Analytics oraz Analytics Platform System (PDW). |
page_server_reads |
bigint | Liczba odczytów serwera stron wykonanych przez żądania w tej sesji podczas tej sesji. Nie może być null. Dotyczy: Hiperskala usługi Azure SQL Database. |
Permissions
Każdy może zobaczyć informacje o swojej sesji.
W SQL Server 2019 (15.x) i wcześniejszych wersjach wymaga VIEW SERVER STATE to zobaczenia wszystkich sesji na serwerze. W programie SQL Server 2022 (16.x) i nowszych wersjach wymagane jest VIEW SERVER PERFORMANCE STATE uprawnienie na serwerze.
W SQL Database wymaga VIEW DATABASE STATE zobaczenia wszystkich połączeń z aktualną bazą danych.
VIEW DATABASE STATE nie może być przyznany w bazie master danych.
Uwagi
Po common criteria compliance enabled włączeniu opcji konfiguracji serwera statystyki logowania wyświetlane są w następujących kolumnach.
last_successful_logonlast_unsuccessful_logonunsuccessful_logons
Jeśli ta opcja nie jest włączona, te kolumny zwracają wartości null. Aby uzyskać więcej informacji o ustawieniu tej opcji konfiguracji serwera, zobacz Konfiguracja serwera: włączona zgodność z kryteriami wspólnymi.
Połączenia administracyjne w Azure SQL Database widzą jeden wiersz na każdą sesję uwierzytelnioną. Sesje sa pojawiające się w zestawie wyników nie mają wpływu na limit użytkowników dla sesji. Połączenia niebędące administratorem widzą tylko informacje dotyczące sesji użytkownika bazy danych.
Ze względu na różnice w sposobie ich zapisywania mogą się nie zgadzaćsys.dm_tran_session_transactions... open_transaction_countopen_transaction_count
Kardynały relacji
| Źródło | Do | Aplikuj | Relacja |
|---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests | session_id |
Jeden do zera lub jeden do wielu |
sys.dm_exec_sessions |
sys.dm_exec_connections | session_id |
Jeden do zera lub jeden do wielu |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions | session_id |
Jeden do zera lub jeden do wielu |
sys.dm_exec_sessions |
sys.dm_exec_cursors (session_id | 0) |
session_id CROSS APPLYOUTER APPLY |
Jeden do zera lub jeden do wielu |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage | session_id |
Jeden do jednego |
Przykłady
A. Znajdź użytkowników podłączonych do serwera
Poniższy przykład znajduje użytkowników podłączonych do serwera i zwraca liczbę sesji dla każdego użytkownika.
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B. Znajdź kursory o długim czasie
Poniższy przykład pokazuje kursory, które były otwarte dłużej niż określony czas, kto je stworzył oraz na jakiej sesji się znajdują.
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. Znajdź sesje bezczynnościowe, w których są otwarte transakcje
Poniższy przykład znajduje sesje z otwartymi transakcjami i są bezczynne. Sesja bezczynna to taka, w której nie ma obecnie uruchamianego żądania.
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. Znajdź informacje o powiązaniu zapytania
Poniższy przykład zbiera informacje o własnym połączeniu zapytania:
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;
Treści powiązane
- dynamiczne widoki zarządzania systemu
- Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (Transact-SQL)