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 isto a partir de pool SQL dedicado no Azure Synapse Analytics ou Analytics Platform System (PDW), veja sys.dm_pdw_nodes_exec_sessions. Para pool SQL serverless ou 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 anulável. |
login_time |
datetime | Hora em que a sessão foi estabelecida. Não anulável. 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) | Nome da estação de trabalho cliente específica para uma sessão. O valor é NULL para sessões internas. Nullable.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) | Nome do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. Nullable. |
host_process_id |
int | ID do processo do programa cliente que iniciou a sessão. O valor é NULL para sessões internas. Nullable. |
client_version |
int | Versão do protocolo TDS da interface utilizada pelo cliente para se ligar ao servidor. O valor é NULL para sessões internas. Nullable. |
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. Nullable. |
security_id |
Varbinário(85) | ID de segurança do Windows associado ao login. Não anulável. |
login_name |
nvarchar(128) | 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. Não anulável. |
nt_domain |
nvarchar(128) | 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. Nullable. |
nt_user_name |
nvarchar(128) | 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. Nullable. |
status |
nvarchar(30) | 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.Não anulável. |
context_info |
Varbinário(128) |
CONTEXT_INFO valor para a sessão. A informação de contexto é definida pelo utilizador usando a instrução SET CONTEXT_INFO . Nullable. |
cpu_time |
int | Tempo de CPU, em milissegundos, utilizado por esta sessão. Não anulável. |
memory_usage |
int | Número de páginas de 8 KB de memória utilizadas por esta sessão. Não anulável. |
total_scheduled_time |
int | Tempo total, em milissegundos, para o qual a sessão (pedidos internos) estava agendada para execução. Não anulável. |
total_elapsed_time |
int | Tempo, em milissegundos, desde que a sessão foi estabelecida. Não anulável. |
endpoint_id |
int | ID do endpoint associado à sessão. Não anulável. |
last_request_start_time |
datetime | Hora em que começou o último pedido da sessão. Este tempo inclui o pedido atualmente em execução. Não anulável. |
last_request_end_time |
datetime | Hora da última conclusão de um pedido na sessão. Nullable. |
reads |
bigint | Número de leituras realizadas, por pedidos nesta sessão, durante esta sessão. Não anulável. |
writes |
bigint | Número de escritas realizadas, por pedidos nesta sessão, durante esta reunião. Não anulável. |
logical_reads |
bigint | Número de leituras lógicas realizadas, por pedidos nesta sessão, durante esta sessão. Não anulável. |
is_user_process |
bit |
0 se a sessão for uma sessão do sistema. Caso contrário, é 1. Não anulável. |
text_size |
int |
TEXTSIZE configuração para a sessão. Não anulável. |
language |
nvarchar(128) |
LANGUAGE configuração para a sessão. Nullable. |
date_format |
Nvarchar(3) |
DATEFORMAT configuração para a sessão. Nullable. |
date_first |
smallint |
DATEFIRST configuração para a sessão. Não anulável. |
quoted_identifier |
bit |
QUOTED_IDENTIFIER configuração para a sessão. Não anulável. |
arithabort |
bit |
ARITHABORT configuração para a sessão. Não anulável. |
ansi_null_dflt_on |
bit |
ANSI_NULL_DFLT_ON configuração para a sessão. Não anulável. |
ansi_defaults |
bit |
ANSI_DEFAULTS configuração para a sessão. Não anulável. |
ansi_warnings |
bit |
ANSI_WARNINGS configuração para a sessão. Não anulável. |
ansi_padding |
bit |
ANSI_PADDING configuração para a sessão. Não anulável. |
ansi_nulls |
bit |
ANSI_NULLS configuração para a sessão. Não anulável. |
concat_null_yields_null |
bit |
CONCAT_NULL_YIELDS_NULL configuração para a sessão. Não anulável. |
transaction_isolation_level |
smallint | Nível de isolamento da transação da sessão.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = SnapshotNão anulável. |
lock_timeout |
int |
LOCK_TIMEOUT configuração para a sessão. O valor é em milissegundos. Não anulável. |
deadlock_priority |
int |
DEADLOCK_PRIORITY configuração para a sessão. Não anulável. |
row_count |
bigint | O número de carreiras retornado na sessão até este ponto. Não anulável. |
prev_error |
int | ID do último erro retornado na sessão. Não anulável. |
original_security_id |
Varbinário(85) | ID de segurança do Windows associado ao original_login_namearquivo . Não anulável. |
original_login_name |
nvarchar(128) | 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 poderia 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. Não anulável. |
last_successful_logon |
datetime | Hora do último login bem-sucedido antes original_login_name do início da sessão atual. |
last_unsuccessful_logon |
datetime | Hora da última tentativa de login falhada antes original_login_name do início da sessão atual. |
unsuccessful_logons |
bigint | Número de tentativas de login malsucedidas para o original_login_name entre o last_successful_logon e login_time. |
group_id |
int | ID do grupo de carga de trabalho ao qual esta sessão pertence. Não anulável. |
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 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 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ú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 esta distribuição se encontra. Aplica-se a: Azure Synapse Analytics e Analytics Platform System (PDW). |
page_server_reads |
bigint | Número de leituras do servidor de páginas realizadas, por pedidos nesta sessão, durante esta reunião. Não anulável. Aplica-se a: Hiperescala do Banco de Dados SQL do Azure. |
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, veja Configuração do servidor: conformidade com critérios comuns ativada.
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;
GO
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;