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.
Имя столбца |
Тип данных |
Описание |
||
---|---|---|---|---|
session_id |
smallint |
Идентификатор сеанса, связанный со всеми активными первичными соединениями. Не допускает значения NULL. |
||
login_time |
datetime |
Время подключения сеанса. Не допускает значения NULL. |
||
host_name |
nvarchar(128) |
Имя клиентской рабочей станции, указанное в сеансе. Для внутреннего сеанса это значение равно NULL. Допускаются значения NULL.
|
||
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. |
||
nt_user_name |
nvarchar(128) |
Имя пользователя Windows для клиента, если во время сеанса используется проверка подлинности Windows или доверительное соединение. Для внутренних сеансов и пользователей, не принадлежащих к домену, это значение равно NULL. Допускаются значения NULL. |
||
status |
nvarchar(30) |
Состояние сеанса. Возможные значения:
Не допускает значения 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 до запуска текущего сеанса. |
||
last_unsuccessful_logon |
datetime |
Время последнего неуспешного входа в систему для имени original_login_name до запуска текущего сеанса. |
||
unsuccessful_logons |
bigint |
Число неуспешных попыток входа в систему для имени original_login_name между last_successful_logon и login_time. |
||
group_id |
int |
Идентификатор группы рабочей нагрузки, которой принадлежит этот сеанс. Значение NULL недопустимо. |
||
database_id |
smallint |
Идентификатор текущей базы данных для каждого сеанса. |
||
authenticating_database_id |
int |
Идентификатор базы данных, выполняющей проверку подлинности участника. Для имен входа это значение будет равно 0. Для пользователей автономной базы данных это значение будет содержать идентификатор автономной базы данных. |
||
open_transaction_count |
int |
Количество открытых транзакций на сеанс. |
Разрешения
Требуется разрешение 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)