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:

  • Executando - Executando uma ou mais solicitações atualmente

  • Suspenso - Não executando nenhuma solicitação atualmente

  • Inativo – A sessão foi reiniciada devido a pooling de conexão e está agora no estado anterior ao logon.

  • Pré-conexão - A sessão está no classificador Administrador de Recursos.

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çãoObservaçã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
    );