sys.dm_exec_sessions (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure simAzure Synapse Analytics simParallel Data Warehouse

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 primeiro exibir a carga atual do sistema e identificar uma sessão de interesse e, em seguida, obter mais informações sobre essa sessão usando outras exibições de gerenciamento dinâmico ou funções de gerenciamento dinâmico.

As sys.dm_exec_connections sys.dm_exec_sessions exibições de gerenciamento dinâmico,, e são sys.dm_exec_requests mapeadas para a exibição de compatibilidade do sistema Sys. sysprocesses preterida.

Observação

para chamá-lo do pool de SQL dedicado no Azure Synapse Analytics ou PDW (Analytics Platform System) , consulte sys.dm_pdw_nodes_exec_sessions. para uso do pool de SQL sem servidor sys.dm_exec_sessions .

Nome da coluna Tipo de dados Descrição e informações específicas da versã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. As sessões que não concluíram o logon no momento em que essa DMV é consultada são mostradas com uma hora de logon de 1900-01-01 .
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.

Observação de segurança: O aplicativo cliente fornece o nome da estação de trabalho e pode fornecer dados imprecisos. Não confie em HOST_NAME como um recurso de segurança.
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 da biblioteca/driver que está sendo usado pelo cliente para se comunicar 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 o nome de logon original que criou a sessão, consulte original_login_name. pode ser um SQL Server nome de logon autenticado ou um Windows nome de usuário de domínio autenticado. Não permite valor nulo.
nt_domain nvarchar(128) Aplica-se a: SQL Server 2008 e posterior.

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) Aplica-se a: SQL Server 2008 e posterior.

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:

Executando – Executando uma ou mais solicitações no momento

Suspenso - Não está executando nenhuma solicitação no momento

Inativo -a sessão foi redefinida devido ao pool de conexões e está agora em estado de pré-logon.

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

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 usando a 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.
Linguagem 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 = ReadUncommitted

2 = Leitura Confirmada

3 = RepeatableRead

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) Identificador 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 Aplica-se a: SQL Server 2008 e posterior.

Hora do último logon efetuado com êxito para original_login_name antes de a sessão atual ter sido iniciada.
last_unsuccessful_logon datetime Aplica-se a: SQL Server 2008 e posterior.

Hora da última tentativa de logon para original_login_name antes de a sessão atual ter sido iniciada.
unsuccessful_logons bigint Aplica-se a: SQL Server 2008 e posterior.

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.
database_id smallint Aplica-se a: SQL Server 2012 (11.x) e posterior.

ID do banco de dados atual para cada sessão.
authenticating_database_id int Aplica-se a: SQL Server 2012 (11.x) e posterior.

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 Aplica-se a: SQL Server 2012 (11.x) e posterior.

Número de transações abertas por sessão.
pdw_node_id int Aplica-se a: Azure Synapse Analytics , PDW (Analytics Platform System)

O identificador do nó em que essa distribuição está.
page_server_reads bigint aplica-se a: Banco de Dados SQL do Azure hiperescala

Número de leituras de servidor de página executadas, por solicitações nesta sessão, durante esta sessão. Não permite valor nulo.

Permissões

Todos podem ver suas próprias informações de sessão.
SQL Server : Requer VIEW SERVER STATE a permissão on SQL Server para ver todas as sessões no servidor.
Banco de Dados SQL : Requer VIEW DATABASE STATE para ver todas as conexões com o banco de dados atual. VIEW DATABASE STATE Não pode ser concedido no master banco de dados.

Comentários

Quando a opção de configuração de servidor habilitada para conformidade de critérios comuns estiver habilitada, as estatísticas de logon serão exibidas nas colunas a seguir.

  • 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 essa opção de configuração de servidor, consulte opção de configuração de servidor habilitada de conformidade de critérios comuns.

as conexões de administrador no Banco de Dados SQL do Azure verão uma linha por sessão autenticada. As sessões "SA" que aparecem no ResultSet não têm nenhum impacto sobre a cota do usuário para sessões. As conexões não administrativas só verão informações relacionadas às suas sessões de usuário do banco de dados.

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

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)