Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Devolve uma linha por sessão autenticada no SQL Server.
sys.dm_exec_sessions é uma vista ao alcance do servidor que mostra informações sobre todas as ligações de utilizadores ativas e tarefas internas. Esta informação inclui a versão do cliente, nome do programa do cliente, hora de login do cliente, utilizador de login, definição atual da sessão e mais. Use sys.dm_exec_sessions para primeiro visualizar a carga atual do sistema e identificar uma sessão de interesse, e depois aprender mais informações sobre essa sessão utilizando outras vistas de gestão dinâmica ou funções de gestão dinâmica.
As sys.dm_exec_connectionsvistas , sys.dm_exec_sessions, e sys.dm_exec_requests de gestão dinâmica mapeiam para a vista de compatibilidade do sistema sys.sysprocesses , que está obsoleta.
Observação
Para chamar esta vista 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 | Não | Identifica a sessão associada a cada conexão primária ativa. |
login_time |
datetime | Não | Hora em que a sessão foi estabelecida. As sessões que ainda não iniciaram sessão completamente no momento em que este DMV é consultado são apresentadas 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: A aplicação cliente fornece o nome da estação de trabalho e pode fornecer dados imprecisos. Não confie nisso HOST_NAME como uma característica 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 ligar 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 |
Varbinário(85) | Não | ID de segurança do Windows associado ao login. |
login_name |
nvarchar(128) | Não | Nome de logon do SQL Server sob o qual a sessão está sendo executada no momento. Para o nome de login original que criou a sessão, veja original_login_name. Pode ser um nome de login autenticado SQL Server ou um nome de utilizador de domínio autenticado por Windows. |
nt_domain |
nvarchar(128) | Yes | Domínio Windows para o cliente se a sessão estiver a usar Autenticação Windows ou uma ligação de confiança. Este valor é NULL para sessões internas e utilizadores não pertencentes ao domínio. |
nt_user_name |
nvarchar(128) | Yes | Nome de utilizador do Windows para o cliente se a sessão estiver a usar Autenticação Windows ou uma ligação de confiança. Este valor é NULL para sessões internas e utilizadores não pertencentes ao domínio. |
status |
nvarchar(30) | Não | Estado da sessão. Valores possíveis:Running - Atualmente a executar um ou mais pedidosSleeping - Atualmente sem pedidos a correrDormant - A sessão foi reiniciada devido ao pooling de ligação e agora está em estado pré-login.Preconnect - A sessão está no classificador Governador de Recursos. |
context_info |
Varbinário(128) | Yes |
CONTEXT_INFO valor para a sessão. A informação de contexto é definida pelo utilizador usando a instrução SET CONTEXT_INFO . |
cpu_time |
int | Não | Tempo de CPU, em milissegundos, utilizado por esta sessão. |
memory_usage |
int | Não | Número de páginas de 8 KB de memória utilizadas por esta sessão. |
total_scheduled_time |
int | Não | Tempo total, em milissegundos, para o qual a sessão (pedidos internos) estava agendada para execução. |
total_elapsed_time |
int | Não | Tempo, em milissegundos, desde que a sessão foi estabelecida. |
endpoint_id |
int | Não | ID do endpoint associado à sessão. |
last_request_start_time |
datetime | Não | Hora em que começou o último pedido da sessão. Este tempo inclui o pedido atualmente em execução. |
last_request_end_time |
datetime | Yes | Hora da última conclusão de um pedido na sessão. |
reads |
bigint | Não | Número de leituras físicas realizadas, a pedido nesta sessão, durante esta sessão. |
writes
1 |
bigint | Não | Número de escritas físicas realizadas, a pedido nesta sessão, durante esta sessão. |
logical_reads |
bigint | Não | Número de leituras lógicas realizadas, por pedidos nesta sessão, durante esta sessão. |
is_user_process |
bit | Não |
0 se a sessão for uma sessão do sistema. Caso contrário, é 1. |
text_size |
int | Não |
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 | Não |
DATEFIRST configuração para a sessão. |
quoted_identifier |
bit | Não |
QUOTED_IDENTIFIER configuração para a sessão. |
arithabort |
bit | Não |
ARITHABORT configuração para a sessão. |
ansi_null_dflt_on |
bit | Não |
ANSI_NULL_DFLT_ON configuração para a sessão. |
ansi_defaults |
bit | Não |
ANSI_DEFAULTS configuração para a sessão. |
ansi_warnings |
bit | Não |
ANSI_WARNINGS configuração para a sessão. |
ansi_padding |
bit | Não |
ANSI_PADDING configuração para a sessão. |
ansi_nulls |
bit | Não |
ANSI_NULLS configuração para a sessão. |
concat_null_yields_null |
bit | Não |
CONCAT_NULL_YIELDS_NULL configuração para a sessão. |
transaction_isolation_level |
smallint | Não | Nível de isolamento da transação da sessão.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = Snapshot |
lock_timeout |
int | Não |
LOCK_TIMEOUT configuração para a sessão. O valor é em milissegundos. |
deadlock_priority |
int | Não |
DEADLOCK_PRIORITY configuração para a sessão. |
row_count |
bigint | Não | O número de carreiras retornado na sessão até este ponto. |
prev_error |
int | Não | ID do último erro retornado na sessão. |
original_security_id |
Varbinário(85) | Não | ID de segurança do Windows associado ao original_login_namearquivo . |
original_login_name |
nvarchar(128) | Não | Nome de login SQL Server que o cliente usou para criar esta sessão. Pode ser um nome de login autenticado SQL Server, um nome de utilizador de domínio autenticado no Windows ou um utilizador de base de dados contido. A sessão pode ter passado por muitas trocas de contexto implícitas ou explícitas após a ligação inicial, por exemplo, se for usado EXECUTE AS. |
last_successful_logon |
datetime | Yes | Hora do último login bem-sucedido antes original_login_name do início da sessão atual. |
last_unsuccessful_logon |
datetime | Yes | Hora da última tentativa de login falhada antes original_login_name do início da sessão atual. |
unsuccessful_logons |
bigint | Yes | Número de tentativas de login malsucedidas para o original_login_name entre o last_successful_logon e login_time. |
group_id |
int | Não | ID do grupo de carga de trabalho ao qual esta sessão pertence. |
database_id |
smallint | Não | 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 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 autentica a entidade de segurança. Para logins, o valor é 0. Para usuários de banco de dados contido, o valor é a ID do banco de dados contido.Aplica-se a: SQL Server 2012 (11.x) e versões posteriores. |
open_transaction_count |
int | Não | 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 | Não | O identificador do nó em que esta distribuição se encontra. Aplica-se a: Azure Synapse Analytics e Analytics Platform System (PDW). |
page_server_reads |
bigint | Não | Número de leituras do servidor de páginas realizadas, por pedidos nesta sessão, durante esta reuniã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. Este valor não equivale diretamente a escritas reais, porque a mesma página pode ser marcada mais do que uma vez. Estes contadores são agregados no final do lote.
Permissions
Cada um pode ver a sua própria informação 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.
Na base de dados SQL, é necessário VIEW DATABASE STATE ver todas as ligações à base de dados atual.
VIEW DATABASE STATE Não pode ser concedido na master base de dados.
Observações
Quando a common criteria compliance enabled opção de configuração do servidor está ativada, as estatísticas de login são exibidas nas colunas seguintes.
last_successful_logonlast_unsuccessful_logonunsuccessful_logons
Se esta opção não estiver ativada, estas colunas devolvem valores nulos. Para mais informações sobre como definir esta opção de configuração de servidor, consulte Ativar configuração de conformidade com critérios comuns.
As ligações administrativas na Azure SQL Database veem uma linha por sessão autenticada. As sa sessões que aparecem no conjunto de resultados não têm qualquer efeito na quota de utilizadores para sessões. As ligações não administrativas só veem informações relacionadas com as suas sessões de utilizador na base de dados.
Por causa das diferenças na forma como são gravadas, open_transaction_count pode não coincidirsys.dm_tran_session_transactions...open_transaction_count
Cardinalidades de relacionamento
| De | Para | On/Apply | Relacionamento |
|---|---|---|---|
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 APPLYOUTER APPLY |
Um para zero ou um para muitos |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage | session_id |
One-to-one |
Examples
A. Encontre utilizadores que estejam ligados ao servidor
O exemplo seguinte encontra os utilizadores que estão ligados ao servidor e devolve o número de sessões para cada utilizador.
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B. Encontre cursores de longa duração
O exemplo seguinte mostra os cursores que estiveram abertos por mais do que um período específico, quem os criou e em que sessão se encontram.
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. Encontre sessões inativas que tenham transações em aberto
O exemplo seguinte encontra sessões que têm transações abertas e estão inativas. Uma sessão inativa é aquela em que não há nenhum pedido a correr atualmente.
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. Encontre informações sobre a própria ligação de uma consulta
O exemplo seguinte recolhe informações sobre a própria ligação de uma 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;