sys.dm_exec_sessions (Transact-SQL)
Retorna uma linha por sessão autenticada no SQL Server. sys.dm_exec_sessions é uma exibição de escopo de servidor que mostra informações sobre todas as conexões de usuário ativas e tarefas internas. Essas informações contêm a versão de cliente, o nome do programa cliente, a hora do logon do cliente, o usuário do logon, a configuração da sessão atual, etc. Use sys.dm_exec_sessions para exibir primeiro a carga atual do sistema e identificar uma sessão de interesse e, em seguida, para obter mais informações sobre essa sessão com o uso de outras exibições ou funções de gerenciamento dinâmico.
As exibições de gerenciamento dinâmico sys.dm_exec_connections, sys.dm_exec_sessions e sys.dm_exec_requests são mapeadas para a tabela do sistema sys.sysprocesses.
Nome da coluna |
Tipo de dados |
Descrição |
||
---|---|---|---|---|
session_id |
smallint |
Identifica a sessão associada a cada conexão primária ativa. Não permite valor nulo. |
||
login_time |
datetime |
Hora em que sessão foi estabelecida. Não permite valor nulo. |
||
host_name |
nvarchar(128) |
Nome da estação de trabalho cliente específica de uma sessão. O valor é NULL para sessões internas. Permite valor nulo.
|
||
program_name |
nvarchar(128) |
Nome do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. Permite valor nulo. |
||
host_process_id |
int |
ID do processo do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. Permite valor nulo. |
||
client_version |
int |
Versão de protocolo TDS da interface usada pelo cliente para conexão com o servidor. O valor é NULL para sessões internas. Permite valor nulo. |
||
client_interface_name |
nvarchar(32) |
Nome de protocolo usado pelo cliente para conexão com o servidor. O valor é NULL para sessões internas. Permite valor nulo. |
||
security_id |
varbinary(85) |
Identificador de segurança do Microsoft Windows associado ao logon. Não permite valor nulo. |
||
login_name |
nvarchar(128) |
Nome do logon do SQL Server no qual a sessão está sendo executada atualmente. Para obter o nome do logon do usuário que criou a sessão, consulte original_login_name. Pode ser um nome de logon autenticado pelo SQL Server ou um nome de usuário de domínio autenticado pelo Windows. Não permite valor nulo. |
||
nt_domain |
nvarchar(128) |
Domínio de Windows do cliente se a sessão estiver usando Autenticação do Windows ou uma conexão confiável. Esse valor é NULL para sessões internas e usuários que não têm domínio. Permite valor nulo. |
||
nt_user_name |
nvarchar(128) |
Nome do usuário do Windows do cliente se a sessão estiver usando Autenticação do Windows ou uma conexão confiável. Esse valor é NULL para sessões internas e usuários que não têm domínio. Permite valor nulo. |
||
status |
nvarchar(30) |
Status da sessão. Valores possíveis:
Não permite valor nulo. |
||
context_info |
varbinary(128) |
Valor CONTEXT_INFO da sessão. As informações de contexto são definidas pelo usuário com o uso da instrução SET CONTEXT_INFO. Permite valor nulo. |
||
cpu_time |
int |
Tempo da CPU, em milissegundos, usado por essa sessão. Não permite valor nulo. |
||
memory_usage |
int |
Número de páginas de 8 KB de memória usado por essa sessão. Não permite valor nulo. |
||
total_scheduled_time |
int |
Tempo total, em milissegundos, para o qual a sessão (solicitações internas) era programada para execução. Não permite valor nulo. |
||
total_elapsed_time |
int |
Tempo, em milissegundos, desde que a sessão foi estabelecida. Não permite valor nulo. |
||
endpoint_id |
int |
ID do ponto de extremidade associado à sessão. Não permite valor nulo. |
||
last_request_start_time |
datetime |
Hora de início da última solicitação na sessão. Inclui a solicitação em execução no momento. Não permite valor nulo. |
||
last_request_end_time |
datetime |
Hora da última conclusão de uma solicitação na sessão. Permite valor nulo. |
||
reads |
bigint |
Número de leituras executadas por solicitações durante esta sessão. Não permite valor nulo. |
||
writes |
bigint |
Número de gravações executadas por solicitações durante esta sessão. Não permite valor nulo. |
||
logical_reads |
bigint |
Número de leituras lógicas executadas na sessão. Não permite valor nulo. |
||
is_user_process |
bit |
0 se a sessão for uma sessão do sistema. Caso contrário, será 1. Não permite valor nulo. |
||
text_size |
int |
Configuração de TEXTSIZE da sessão. Não permite valor nulo. |
||
language |
nvarchar(128) |
Configuração de LANGUAGE da sessão. Permite valor nulo. |
||
date_format |
nvarchar(3) |
Configuração de DATEFORMAT da sessão. Permite valor nulo. |
||
date_first |
smallint |
Configuração de DATEFIRST da sessão. Não permite valor nulo. |
||
quoted_identifier |
bit |
Configuração de QUOTED_IDENTIFIER da sessão. Não permite valor nulo. |
||
arithabort |
bit |
Configuração de ARITHABORT da sessão. Não permite valor nulo. |
||
ansi_null_dflt_on |
bit |
Configuração de ANSI_NULL_DFLT_ON da sessão. Não permite valor nulo. |
||
ansi_defaults |
bit |
Configuração de ANSI_DEFAULTS da sessão. Não permite valor nulo. |
||
ansi_warnings |
bit |
Configuração de ANSI_WARNINGS da sessão. Não permite valor nulo. |
||
ansi_padding |
bit |
Configuração de ANSI_PADDING da sessão. Não permite valor nulo. |
||
ansi_nulls |
bit |
Configuração de ANSI_NULLS da sessão. Não permite valor nulo. |
||
concat_null_yields_null |
bit |
Configuração de CONCAT_NULL_YIELDS_NULL da sessão. Não permite valor nulo. |
||
transaction_isolation_level |
smallint |
Nível de isolamento da transação da sessão. 0 = Não Especificado 1 = Leitura Não Confirmada 2 = Leitura Confirmada 3 = Repetível 4 = Serializável 5 = Instantâneo Não permite valor nulo. |
||
lock_timeout |
int |
Configuração de LOCK_TIMEOUT da sessão. O valor está em milissegundos. Não permite valor nulo. |
||
deadlock_priority |
int |
Configuração de DEADLOCK_PRIORITY da sessão. Não permite valor nulo. |
||
row_count |
bigint |
Número de linhas retornadas na sessão até este ponto. Não permite valor nulo. |
||
prev_error |
int |
ID do último erro retornado na sessão. Não permite valor nulo. |
||
original_security_id |
varbinary(85) |
A ID de segurança do Microsoft Windows associada a original_login_name. Não permite valor nulo. |
||
original_login_name |
nvarchar(128) |
Nome do logon do SQL Server que o cliente usou para criar esta sessão. Pode ser um nome de logon autenticado pelo SQL Server, um nome de usuário de domínio autenticado pelo Windows ou um usuário do banco de dados independente. Observe que a sessão pode ter passado por muitas alternâncias de contexto implícitas ou explícitas após a conexão inicial. Por exemplo, se EXECUTE AS for usado. Não permite valor nulo. |
||
last_successful_logon |
datetime |
Hora do último logon feito com êxito para original_login_name antes de a sessão atual ter sido iniciada. |
||
last_unsuccessful_logon |
datetime |
Hora da última tentativa de logon do original_login_name antes de a sessão atual ser iniciada. |
||
unsuccessful_logons |
bigint |
Número de tentativas de logon malsucedidas para o original_login_name entre last_successful_logon e login_time. |
||
group_id |
int |
ID do grupo de carga de trabalho a que pertence esta sessão. Não permite valor nulo. |
||
database_id |
smallint |
ID do banco de dados atual para cada sessão. |
||
authenticating_database_id |
int |
ID do banco de dados que está autenticando a entidade. Para Logons, o valor será 0. Para usuários de bancos de dados independentes, o valor será a ID do banco de dados independente. |
||
open_transaction_count |
int |
Número de transações abertas por sessão. |
Permissões
Requer a permissão VIEW SERVER STATE no servidor.
Observação |
---|
Se o usuário tiver a permissão VIEW SERVER STATE no servidor, ele verá todas as sessões em execução na instância do SQL Server; caso contrário, verá apenas a sessão atual. |
Comentários
Quando a opção de configuração de servidor common criteria compliance enabled é habilitada, são exibidas estatísticas de logon nas colunas seguintes.
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
Se essa opção não for habilitada, essas colunas retornarão valores nulos. Para obter mais informações sobre como definir esta opção de configuração de servidor, consulte Opção de configuração de servidor com conformidade de critérios comuns habilitada.
Cardinalidades de relações
De |
Para |
Em/Aplicar |
Relação |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
Um para zero ou um para muitos |
sys.dm_exec_sessions |
sys.dm_exec_connections |
session_id |
Um para zero ou um para muitos |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions |
session_id |
Um para zero ou um para muitos |
sys.dm_exec_sessions |
sys.dm_exec_cursors(session_id | 0) |
session_id CROSS APPLY OUTER APPLY |
Um para zero ou um para muitos |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage |
session_id |
Um para um |
Exemplos
A.Localizando usuários conectados ao servidor
O exemplo a seguir localiza os usuários conectados ao servidor e retorna o número de sessões de cada usuário.
SELECT login_name ,COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B.Localizando cursores demorados
O exemplo a seguir localiza os cursores abertos para mais um intervalo de tempo especificado, que criou os cursores e em qual sessão os cursores estão.
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;
C.Localizando sessões inativas que têm transações abertas
O exemplo a seguir localiza sessões que têm transações abertas e estão ociosas. Uma sessão ociosa é a que não tem nenhuma solicitação em execução no momento.
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.Localizando informações sobre a própria conexão de consultas
Consulta típica para reunir informações sobre a própria conexão de consultas.
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;
Consulte também
Referência
Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à execução (Transact-SQL)