sys.dm_exec_sessions (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Ponto de extremidade de análise de SQL no Microsoft FabricDepósito no Microsoft FabricBanco de dados SQL no Microsoft Fabric

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 exibição de compatibilidade de sistema sys.sysprocesses preterida.

Note

Para chamar essa visão do Azure Synapse Analytics (apenas pool SQL dedicado) ou do Analytics Platform System (PDW), veja sys.dm_pdw_nodes_exec_sessions. Use sys.dm_exec_sessions para Azure Synapse Analytics (apenas pool SQL serverless) ou Microsoft Fabric.

Nome da Coluna Tipo de dados Anulável Description
session_id smallint No Identifica a sessão associada a cada conexão primária ativa.
login_time datetime No Hora em que sessão foi estabelecida. As sessões que não fizeram login completamente no momento em que este DMV é consultado são mostradas com um tempo de login de 1900-01-01.
host_name nvarchar(128) Yes Nome da estação de trabalho cliente específica para uma sessão. O valor é NULL para sessões internas.

Nota de segurança: O aplicativo cliente fornece o nome da estação de trabalho e pode fornecer dados imprecisos. Não confie como HOST_NAME um recurso de segurança.
program_name nvarchar(128) Yes Nome do programa cliente que iniciou a sessão. O valor é NULL para sessões internas.
host_process_id int Yes ID do processo do programa cliente que iniciou a sessão. O valor é NULL para sessões internas.
client_version int Yes Versão do protocolo TDS da interface usada pelo cliente para se conectar ao servidor. O valor é NULL para sessões internas.
client_interface_name nvarchar(32) Yes Nome da biblioteca/driver que está sendo usado pelo cliente para se comunicar com o servidor. O valor é NULL para sessões internas.
security_id varbinary(85) No ID de segurança do Windows associada ao logon.
login_name nvarchar(128) No Nome do logon do SQL Server no qual a sessão está sendo executada atualmente. Para obter o nome de logon original 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.
nt_domain nvarchar(128) Yes 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 são de domínio.
nt_user_name nvarchar(128) Yes 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 são de domínio.
status nvarchar(30) No Status da sessão. Valores possíveis:

Running - Atualmente executando uma ou mais solicitações
Sleeping - Atualmente não executando nenhuma solicitação
Dormant - A sessão foi redefinida devido ao pool de conexões e agora está no estado de pré-login.
Preconnect - A sessão está no classificador do Administrador de Recursos.
context_info varbinary(128) Yes CONTEXT_INFO valor para a sessão. A informação de contexto é definida pelo usuário usando a SET CONTEXT_INFO instrução.
cpu_time int No Tempo da CPU, em milissegundos, usado por essa sessão.
memory_usage int No Número de páginas de 8 KB de memória usado por essa sessão.
total_scheduled_time int No Tempo total, em milissegundos, para o qual a sessão (solicitações internas) era programada para execução.
total_elapsed_time int No Tempo, em milissegundos, desde que a sessão foi estabelecida.
endpoint_id int No ID do endpoint associado à sessão.
last_request_start_time datetime No Hora de início da última solicitação na sessão. Desta vez, inclui a solicitação em execução no momento.
last_request_end_time datetime Yes Hora da última conclusão de uma solicitação na sessão.
reads bigint No Número de leituras físicas realizadas, por solicitação nesta sessão, durante esta reunião.
writes 1 bigint No Número de gravações físicas realizadas, por solicitação nesta sessão, durante esta sessão.
logical_reads bigint No Número de leituras lógicas executadas por solicitações durante esta sessão.
is_user_process bit No 0 se a sessão for uma sessão do sistema. Caso contrário, é 1.
text_size int No TEXTSIZE configuração para a sessão.
language nvarchar(128) Yes LANGUAGE configuração para a sessão.
date_format nvarchar(3) Yes DATEFORMAT configuração para a sessão.
date_first smallint No DATEFIRST configuração para a sessão.
quoted_identifier bit No QUOTED_IDENTIFIER configuração para a sessão.
arithabort bit No ARITHABORT configuração para a sessão.
ansi_null_dflt_on bit No ANSI_NULL_DFLT_ON configuração para a sessão.
ansi_defaults bit No ANSI_DEFAULTS configuração para a sessão.
ansi_warnings bit No ANSI_WARNINGS configuração para a sessão.
ansi_padding bit No ANSI_PADDING configuração para a sessão.
ansi_nulls bit No ANSI_NULLS configuração para a sessão.
concat_null_yields_null bit No CONCAT_NULL_YIELDS_NULL configuração para a sessão.
transaction_isolation_level smallint No Nível de isolamento da transação da sessão.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int No LOCK_TIMEOUT configuração para a sessão. O valor está em milissegundos.
deadlock_priority int No DEADLOCK_PRIORITY configuração para a sessão.
row_count bigint No Número de linhas retornadas na sessão até este ponto.
prev_error int No ID do último erro retornado na sessão.
original_security_id varbinary(85) No ID de segurança do Windows associada ao original_login_name.
original_login_name nvarchar(128) No 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. A sessão pode ter passado por muitas trocas de contexto implícitas ou explícitas após a conexão inicial, por exemplo, se EXECUTE AS for usada.
last_successful_logon datetime Yes Hora do último logon bem-sucedido para antes do original_login_name início da sessão atual.
last_unsuccessful_logon datetime Yes Hora da última tentativa de logon malsucedida antes do original_login_name início da sessão atual.
unsuccessful_logons bigint Yes Número de tentativas de logon malsucedidas para o original_login_name entre o last_successful_logon .login_time
group_id int No ID do grupo de carga de trabalho a que pertence esta sessão.
database_id smallint No ID do banco de dados atual para cada sessão.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou em um pool elástico, mas não em um servidor lógico.

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
authenticating_database_id int Yes ID do banco de dados que está autenticando a entidade. Para logins, o valor é 0. Para usuários de banco de dados independente, o valor é a ID do banco de dados independente.

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
open_transaction_count int No Número de transações abertas por sessão.

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
pdw_node_id int No O identificador do nó no qual essa distribuição está.

Aplica-se a: Azure Synapse Analytics e PDW (Analytics Platform System).
page_server_reads bigint No Número de leituras do servidor de páginas executadas por solicitações durante esta sessão.

aplica-se a: Hiperescala do Banco de Dados SQL do Azure.
contained_availability_group_id uniqueidentifier Yes ID do grupo de disponibilidade contido.

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores.

1 Especifica quando uma página está marcada como suja no pool de buffer. Esse valor não equivale diretamente a escritas reais, porque a mesma página pode ser marcada mais de uma vez. Esses contadores são agregados ao final do lote.

Permissions

Todos podem ver suas próprias informações de sessão.

No SQL Server 2019 (15.x) e versões anteriores, é necessário VIEW SERVER STATE ver todas as sessões no servidor. No SQL Server 2022 (16.x) e versões posteriores, requer VIEW SERVER PERFORMANCE STATE permissão no servidor.

No Banco de Dados SQL, é necessário VIEW DATABASE STATE ver todas as conexões com o banco de dados atual. VIEW DATABASE STATE não pode ser concedido no banco de dados master.

Observações

Quando a opção de configuração do common criteria compliance enabled servidor está habilitada, as estatísticas de logon são exibidas nas colunas a seguir.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Se essa opção não estiver habilitada, essas colunas retornarão valores nulos. Para mais informações sobre como configurar essa opção de configuração de servidor, veja Habilitar a configuração de conformidade com critérios comuns.

As conexões de administrador no Banco de Dados SQL do Azure veem uma linha por sessão autenticada. As sa sessões que aparecem no conjunto de resultados não têm nenhum efeito sobre a cota de usuário para sessões. As conexões não administrativas veem apenas informações relacionadas às sessões de usuário do banco de dados.

Devido às diferenças em como eles são gravados, open_transaction_count podem não corresponder sys.dm_tran_session_transactions.open_transaction_count.

Cardinalidades de relações

De Para Em/Aplicar Relationship
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 Individual

Examples

A. Localizar 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. Localizar cursores de execução longa

O exemplo a seguir localiza os cursores que ficaram abertos por mais de um período de tempo específico, quem 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
     INNER JOIN sys.dm_exec_sessions AS s
         ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

C. Localizar 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. Localizar informações sobre a própria conexão de uma consulta

O exemplo a seguir coleta informações sobre a própria conexão da consulta:

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