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 versão de cliente, nome do programa cliente, hora de logon do cliente, usuário do logon, configuração da sessão atual etc. Use sys.dm_exec_sessions para exibir primeiro a carga do sistema atual e identificar uma sessão de interesse e, depois, para obter mais informações sobre essa sessão usando outras exibições ou funções de gerenciamento dinâmicas.
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 quando 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. É anulável. |
program_name |
nvarchar(128) |
Nome de programa cliente que iniciou a sessão. O valor é NULL para sessões internas. É anulável. |
host_process_id |
int |
ID de processo do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. É anulável. |
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. É anulável. |
client_interface_name |
nvarchar(32) |
Nome de protocolo que é usado pelo cliente para conexão com o servidor. O valor é NULL para sessões internas. É anulável. |
security_id |
varbinary(85) |
Identificador de segurança do Microsoft Windows associado ao logon. Não permite valor nulo. |
login_name |
nvarchar(128) |
Nome de logon de SQL Server em que a sessão está sendo executada atualmente. Para o nome de logon original que criou a sessão, consulte original_login_name. Pode ser um nome de logon autenticado por 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. Este valor é o NULL para sessões internas e usuários que não tiverem domínio. É anulável. |
nt_user_name |
nvarchar(128) |
Nome de usuário do Windows do cliente se a sessão estiver usando Autenticação do Windows ou uma conexão confiável. Este valor é o NULL para sessões internas e usuários que não tiverem domínio. É anulável. |
status |
nvarchar(30) |
Status da sessão. Os valores possíveis são:
Não permite valor nulo. |
context_info |
varbinary(128) |
Valor CONTEXT_INFO para a sessão. As informações de contexto são definidas pelo usuário com o uso da instrução SET CONTEXT_INFO. É anulável. |
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 em que a última solicitação na sessão começou. Inclui a solicitação atualmente em execução. Não permite valor nulo. |
last_request_end_time |
datetime |
Hora da última conclusão de uma solicitação na sessão. É anulável. |
reads |
bigint |
Número de leituras executadas, por solicitações nesta sessão, durante esta sessão. Não permite valor nulo. |
writes |
bigint |
Número de gravações executadas, por solicitações nesta sessão, 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 de sistema. Caso contrário, será 1. Não permite valor nulo. |
text_size |
int |
Configuração TEXTSIZE para a sessão. Não permite valor nulo. |
language |
nvarchar(128) |
Configuração LANGUAGE para a sessão. É anulável. |
date_format |
nvarchar(3) |
Configuração DATEFORMAT para a sessão. É anulável. |
date_first |
smallint |
Configuração DATEFIRST para a sessão. Não permite valor nulo. |
quoted_identifier |
bit |
Configuração QUOTED_IDENTIFIER para a sessão. Não permite valor nulo. |
arithabort |
bit |
Configuração ARITHABORT para a sessão. Não permite valor nulo. |
ansi_null_dflt_on |
bit |
Configuração ANSI_NULL_DFLT_ON para a sessão. Não permite valor nulo. |
ansi_defaults |
bit |
Configuração ANSI_DEFAULTS para a sessão. Não permite valor nulo. |
ansi_warnings |
bit |
Configuração ANSI_WARNINGS para a sessão. Não permite valor nulo. |
ansi_padding |
bit |
Configuração ANSI_PADDING para a sessão. Não permite valor nulo. |
ansi_nulls |
bit |
Configuração ANSI_NULLS para a sessão. Não permite valor nulo. |
concat_null_yields_null |
bit |
Configuração CONCAT_NULL_YIELDS_NULL para a 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 LOCK_TIMEOUT para a sessão. O valor está em milissegundos. Não permite valor nulo. |
deadlock_priority |
int |
Configuração DEADLOCK_PRIORITY para a 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) |
Identificador de segurança do Microsoft Windows associada a original_login_name. Não permite valor nulo. |
original_login_name |
nvarchar(128) |
Nome de logon do SQL Server que o cliente usou para criar esta sessão. Pode ser um nome de logon autenticado por SQL Server ou um nome de usuário de domínio autenticado pelo Windows. Observe que a sessão pode ter passado por muitas opções 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 efetuado 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 para original_login_name antes de a sessão atual ter sido iniciada. |
unsuccessful_logons |
bigint |
Número de tentativas de logon malsucedidas para 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. |
Permissões
Exige a permissão VIEW SERVER STATE no servidor.
Observação |
---|
Se o usuário tiver permissão VIEW SERVER STATE no servidor, ele verá todas as sessões em execução na instância de SQL Server; caso contrário, ele verá apenas a sessão atual. |
Comentários
Estatísticas de logon para conformidade com critérios comuns
Quando a opção Conformidade Critérios Comuns Habilitada for ativada com o uso do procedimento armazenado sp_configure, as estatísticas de logon serão armazenadas e exibidas nas seguintes colunas de sys.dm_exec_sessions:
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
Se a opção de configuração de servidor não estiver habilitada, as colunas sys.dm_exec_sessions retornarão valores nulos. Para obter mais informações sobre como definir esta opção de configuração de servidor, consulte Opção common criteria compliance enabled.
Cardinalidades da relação
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
);