sys.dm_exec_sessions (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse 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.
Observação
Para chamar isso do pool de SQL dedicado no Azure Synapse Analytics ou no Analytics Platform System (PDW), confira sys.dm_pdw_nodes_exec_sessions. Para o pool de SQL sem servidor ou o Microsoft Fabric, use 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 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) | Nome da estação de trabalho cliente específica de uma sessão. O valor é NULL para sessões internas. Anulável.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) | Nome do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. Anulável. |
host_process_id |
int | ID do 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 da biblioteca/driver que está sendo usado pelo cliente para se comunicar com o servidor. O valor é NULL para sessões internas. Anulável. |
security_id |
varbinary(85) | ID de segurança do Windows associada 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 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. 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 são de domínio. Anulável. |
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 são de domínio. Anulável. |
status |
nvarchar(30) | Status da sessão. Valores possíveis:Running - Atualmente executando uma ou mais solicitaçõesSleeping - Atualmente não executando nenhuma solicitaçãoDormant - 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.Não permite valor nulo. |
context_info |
varbinary(128) | CONTEXT_INFO valor 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 endpoint associado à sessão. Não permite valor nulo. |
last_request_start_time |
datetime | Hora de início da última solicitação na sessão. Desta vez, 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. Anulável. |
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 por solicitações durante esta 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, é 1 . Não permite valor nulo. |
text_size |
int | TEXTSIZE configuração para a sessão. Não permite valor nulo. |
language |
nvarchar(128) | LANGUAGE configuração para a sessão. Anulável. |
date_format |
nvarchar(3) | DATEFORMAT configuração para a sessão. Anulável. |
date_first |
smallint | DATEFIRST configuração para a sessão. Não permite valor nulo. |
quoted_identifier |
bit | QUOTED_IDENTIFIER configuração para a sessão. Não permite valor nulo. |
arithabort |
bit | ARITHABORT configuração para a sessão. Não permite valor nulo. |
ansi_null_dflt_on |
bit | ANSI_NULL_DFLT_ON configuração para a sessão. Não permite valor nulo. |
ansi_defaults |
bit | ANSI_DEFAULTS configuração para a sessão. Não permite valor nulo. |
ansi_warnings |
bit | ANSI_WARNINGS configuração para a sessão. Não permite valor nulo. |
ansi_padding |
bit | ANSI_PADDING configuração para a sessão. Não permite valor nulo. |
ansi_nulls |
bit | ANSI_NULLS configuração para a sessão. Não permite valor nulo. |
concat_null_yields_null |
bit | CONCAT_NULL_YIELDS_NULL configuração para a sessão. Não permite valor nulo. |
transaction_isolation_level |
smallint | Nível de isolamento da transação da sessão.0 = Unspecified 1 = ReadUncommitted 2 = ReadCommitted 3 = RepeatableRead 4 = Serializable 5 = Snapshot Não permite valor nulo. |
lock_timeout |
int | LOCK_TIMEOUT configuração para a sessão. O valor está em milissegundos. Não permite valor nulo. |
deadlock_priority |
int | DEADLOCK_PRIORITY configuração 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) | ID de segurança do Windows associada ao 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. 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 bem-sucedido para antes do original_login_name início da sessão atual. |
last_unsuccessful_logon |
datetime | Hora da última tentativa de logon malsucedida antes do original_login_name início da sessão atual. |
unsuccessful_logons |
bigint | Número de tentativas de logon malsucedidas para o original_login_name entre o last_successful_logon .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. 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 | 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 | 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 | O identificador do nó em que essa distribuição está ativada. Aplica-se a: Azure Synapse Analytics e PDW (Analytics Platform System). |
page_server_reads |
bigint | Número de leituras do servidor de páginas executadas por solicitações durante esta sessão. Não permite valor nulo. Aplica-se a: Hiperescala do Banco de Dados SQL do Azure. |
Permissões
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
.
Comentários
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 obter mais informações sobre como definir essa opção de configuração de servidor, consulte Configuração do servidor: conformidade com critérios comuns habilitada.
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 | 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. 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;
GO
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;