Поделиться через


sys.dm_exec_sessions (Transact-SQL)

Возвращает по одной строке на каждый прошедший проверку подлинности сеанс, подключенный к SQL Server. sys.dm_exec_sessions — это представление уровня сервера, отображающее сведения обо всех активных соединениях пользователей и внутренних задачах. Эти сведения включают версию клиента, имя программы клиента, время выполнения входа клиентом, пользователя, который выполнил вход, параметр текущего сеанса и другие. Используйте динамическое административное представление sys.dm_exec_sessions, чтобы просмотреть текущую нагрузку системы и выделить представляющий интерес сеанс, а затем получить дополнительные сведения об этом сеансе с помощью других динамических административных представлений или функций динамического управления.

Динамические административные представления sys.dm_exec_connections, sys.dm_exec_sessions и sys.dm_exec_requests сопоставляются с системной таблицей sys.sysprocesses.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Имя столбца

Тип данных

Описание

session_id

smallint

Идентификатор сеанса, связанный со всеми активными первичными соединениями. Не допускает значение NULL.

login_time

datetime

Время подключения сеанса. Не допускает значение NULL.

host_name

nvarchar(128)

Имя клиентской рабочей станции, указанное в сеансе. Для внутреннего сеанса это значение равно NULL. Допускает значение NULL.

Примечание по безопасностиПримечание по безопасности

Имя рабочей станции предоставляется клиентским приложением, оно может предоставлять неточные данные.Не следует полагаться на функцию HOST_NAME для обеспечения безопасности.

program_name

nvarchar(128)

Имя клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL. Допускает значение NULL.

host_process_id

int

Идентификатор процесса клиентской программы, которая инициировала сеанс. Для внутреннего сеанса это значение равно NULL. Допускает значение NULL.

client_version

int

Версия TDS-протокола интерфейса, который используется клиентом для подключения к серверу. Для внутреннего сеанса это значение равно NULL. Допускает значение NULL.

client_interface_name

nvarchar(32)

Имя протокола, используемого клиентом для подключения к серверу. Для внутреннего сеанса это значение равно NULL. Допускает значение NULL.

security_id

varbinary(85)

Идентификатор безопасности Microsoft Windows, связанный с именем входа. Не допускает значение NULL.

login_name

nvarchar(128)

Имя входа SQL Server, под которым выполняется текущий сеанс. Имя входа пользователя, создавшего сеанс, см. в столбце original_login_name. Это может быть имя входа SQL Server, прошедшее проверку подлинности, либо имя пользователя домена Windows, прошедшее проверку подлинности. Не допускает значение NULL.

nt_domain

nvarchar(128)

Домен Windows для клиента, если во время сеанса применяется проверка подлинности Windows или доверительное соединение. Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL. Допускает значение NULL.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

nt_user_name

nvarchar(128)

Имя пользователя Windows для клиента, если во время сеанса используется проверка подлинности Windows или доверительное соединение. Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL. Допускает значение NULL.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

status

nvarchar(30)

Состояние сеанса. Возможные значения:

  • Running — в данный момент выполняется один или более запросов.

  • Sleeping — в данный момент запросы не выполняются.

  • Dormant — из-за организации пула соединений сеанс был изменен и находится в состоянии, предшествующем регистрации.

  • Preconnect — Сеанс находится в классификаторе регулятора ресурсов.

Не допускает значение NULL.

context_info

varbinary(128)

Значение параметра CONTEXT_INFO для сеанса. Контекстно-зависимые сведения устанавливаются пользователем с помощью инструкции SET CONTEXT_INFO. Допускает значение NULL.

cpu_time

int

Время ЦП, использованное данным сеансом, в миллисекундах. Не допускает значение NULL.

memory_usage

int

Количество 8-килобайтовых страниц памяти, используемых данным сеансом. Не допускает значение NULL.

total_scheduled_time

int

Общее время, назначенное данному сеансу (включая его вложенные запросы) для исполнения, в миллисекундах. Не допускает значение NULL.

total_elapsed_time

int

Время, прошедшее с момента установки сеанса в миллисекундах. Не допускает значение NULL.

endpoint_id

int

Идентификатор конечной точки, связанный с сеансом. Не допускает значение NULL.

last_request_start_time

datetime

Время, когда начался последний запрос данного сеанса. Это может быть запрос, выполняющийся в данный момент. Не допускает значение NULL.

last_request_end_time

datetime

Время завершения последнего запроса в рамках данного сеанса. Допускает значение NULL.

reads

bigint

Количество операций чтения, выполненных запросами данного сеанса. Не допускает значение NULL.

writes

bigint

Количество операций записи, выполненных запросами данного сеанса. Не допускает значение NULL.

logical_reads

bigint

Количество логических операций чтения, выполненных в данном сеансе. Не допускает значение NULL.

is_user_process

bit

0, если сеанс является системным. В противном случае значение равно 1. Не допускает значение NULL.

text_size

int

Значение параметра TEXTSIZE для данного сеанса. Не допускает значение NULL.

language

nvarchar(128)

Значение параметра LANGUAGE для данного сеанса. Допускает значение NULL.

date_format

nvarchar(3)

Значение параметра DATEFORMAT для данного сеанса. Допускает значение NULL.

date_first

smallint

Значение параметра DATEFIRST для данного сеанса. Не допускает значение NULL.

quoted_identifier

bit

Значение параметра QUOTED_IDENTIFIER для данного сеанса. Не допускает значение NULL.

arithabort

bit

Значение параметра ARITHABORT для данного сеанса. Не допускает значение NULL.

ansi_null_dflt_on

bit

Значение параметра ANSI_NULL_DFLT_ON для данного сеанса. Не допускает значение NULL.

ansi_defaults

bit

Значение параметра ANSI_DEFAULTS для данного сеанса. Не допускает значение NULL.

ansi_warnings

bit

Значение параметра ANSI_WARNINGS для данного сеанса. Не допускает значение NULL.

ansi_padding

bit

Значение параметра ANSI_PADDING для данного сеанса. Не допускает значение NULL.

ansi_nulls

bit

Значение параметра ANSI_NULLS для данного сеанса. Не допускает значение NULL.

concat_null_yields_null

bit

Значение параметра CONCAT_NULL_YIELDS_NULL для данного сеанса. Не допускает значение NULL.

transaction_isolation_level

smallint

Уровень изоляции транзакции данного сеанса:

0 = не указан;

1 = читать незафиксированные;

2 = читать зафиксированные;

3 = повторяемые результаты;

4 = сериализуемые;

5 = моментальный снимок.

Не допускает значение NULL.

lock_timeout

int

Значение параметра LOCK_TIMEOUT для данного сеанса. Значение указывается в миллисекундах. Не допускает значение NULL.

deadlock_priority

int

Значение параметра DEADLOCK_PRIORITY для данного сеанса. Не допускает значение NULL.

row_count

bigint

Количество строк, возвращенных сеансом на текущий момент времени. Не допускает значение NULL.

prev_error

int

Идентификатор последней ошибки, возвращенной в данном сеансе. Не допускает значение NULL.

original_security_id

varbinary(85)

Идентификатор безопасности Microsoft Windows, связанный с именем входа original_login_name. Не допускает значение NULL.

original_login_name

nvarchar(128)

Имя входа SQL Server, с помощью которого клиент создал данный сеанс. Это может быть имя входа SQL Server, прошедшее проверку подлинности, имя пользователя домена Windows, прошедшее проверку подлинности, или пользователь автономной базы данных. Обратите внимание, что после первоначального соединения для сеанса может быть выполнено много неявных или явных переключений контекста. Например, при использовании инструкции EXECUTE AS. Не допускает значение NULL.

last_successful_logon

datetime

Время последнего успешного входа в систему для имени original_login_name до запуска текущего сеанса.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

last_unsuccessful_logon

datetime

Время последнего неуспешного входа в систему для имени original_login_name до запуска текущего сеанса.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

unsuccessful_logons

bigint

Число неуспешных попыток входа в систему для имени original_login_name между last_successful_logon и login_time.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

group_id

int

Идентификатор группы рабочей нагрузки, которой принадлежит этот сеанс. Не допускает значение NULL.

database_id

smallint

Идентификатор текущей базы данных для каждого сеанса.

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

authenticating_database_id

int

Идентификатор базы данных, выполняющей проверку подлинности участника. Для имен входа это значение будет равно 0. Для пользователей автономной базы данных это значение будет содержать идентификатор автономной базы данных.

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

open_transaction_count

int

Количество открытых транзакций на сеанс.

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

Разрешения

Требует разрешения VIEW SERVER STATE на сервере.

Примечание

Если у пользователя есть разрешение VIEW SERVER STATE для сервера, он увидит все выполняющиеся сеансы на экземпляре SQL Server. В противном случае видимым будет только текущий сеанс.

Замечания

Если параметр конфигурации сервера common criteria compliance enabled включен, статистика входа отображается в следующих столбцах:

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Если этот параметр не включен, то данные столбцы будут возвращать значения NULL. Дополнительные сведения о настройке этого параметра конфигурации сервера см. в разделе Параметр конфигурации сервера «common criteria compliance enabled».

Количества элементов связей

Из

В

Подключить/Применить

Связь

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Один к нулю или один ко многим.

sys.dm_exec_sessions

sys.dm_exec_connections

session_id

Один к нулю или один ко многим.

sys.dm_exec_sessions

sys.dm_tran_session_transactions

session_id

Один к нулю или один ко многим.

sys.dm_exec_sessions

sys.dm_exec_cursors(session_id | 0)

session_id CROSS APPLY

OUTER APPLY

Один к нулю или один ко многим.

sys.dm_exec_sessions

sys.dm_db_session_space_usage

session_id

Один к одному

Примеры

А.Поиск пользователей, подключенных к серверу

В следующем примере производится поиск пользователей, подключенных к серверу, и возвращаются сведения о числе сеансов для каждого пользователя.

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

Б.Поиск курсоров, выполняющихся продолжительное время

В следующем примере производится поиск курсоров, открытых дольше заданного периода времени, определяются их создатели и соответствующие им сеансы.

USE master;
GO
SELECT creation_time ,cursor_id 
    ,name ,c.session_id ,login_name 
FROM sys.dm_exec_cursors(0) AS c 
JOIN sys.dm_exec_sessions AS s 
   ON c.session_id = s.session_id 
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

В.Поиск бездействующих сеансов, имеющих открытые транзакции

В следующем производится поиск сеансов, имеющих открытые транзакции, но при этом бездействующих. Бездействующим сеансом считается сеанс, который в настоящий момент не выполняет запросов.

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

Г.Поиск сведений о собственном соединении запросов

Типичный запрос для сбора сведений о собственном соединении запросов.

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
JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления и функции, связанные с выполнением (Transact-SQL)