sys.dm_os_threads (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Retorna uma lista de todos os threads do sistema operacional SQL Server que estão sendo executados no processo SQL Server.
Observação
Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_os_threads. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
thread_address | varbinary(8) | Endereço de memória (Chave Primária) do thread. |
started_by_sqlservr | bit | Indica o iniciador de thread. 1 = SQL Server iniciou o thread. 0 = Outro componente iniciou o thread, como um procedimento armazenado estendido de dentro do SQL Server. |
os_thread_id | int | ID do thread atribuído pelo sistema operacional. |
status | int | Sinalizador de estado interno. |
instruction_address | varbinary(8) | Endereço da instrução que está sendo executada atualmente. |
creation_time | datetime | Hora em que esse thread foi criado. |
kernel_time | bigint | Tempo de kernel usado por esse thread. |
usermode_time | bigint | Tempo do usuário usado por esse thread. |
stack_base_address | varbinary(8) | Endereço de memória do endereço de pilha mais alto para esse thread. |
stack_end_address | varbinary(8) | Endereço de memória do endereço de pilha mais baixo desse thread. |
stack_bytes_committed | int | Número de bytes confirmados na pilha. |
stack_bytes_used | int | Número de bytes ativamente usados no thread. |
affinity | bigint | Máscara de CPU na qual este thread está sendo executado. Isso depende do valor configurado pela instrução ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Pode ser diferente do agendador em caso de afinidade flexível. |
Prioridade | int | Valor de prioridade deste thread. |
Localidade | int | LCID de localidade em cache do thread. |
Token | varbinary(8) | Identificador de token de representação em cache para o thread. |
is_impersonating | int | Indica se esse thread está usando a representação do Win32. 1 = O thread está usando credenciais de segurança que são diferentes do padrão do processo. Isso indica que o thread está representando uma entidade diferente daquela que criou o processo. |
is_waiting_on_loader_lock | int | Status do sistema operacional indicando se o thread está aguardando o bloqueio de carregador. |
fiber_data | varbinary(8) | Fibra do Win32 atual sendo executada no thread. Isso só é aplicável quando o SQL Server está configurado para pool leve. |
thread_handle | varbinary(8) | Somente para uso interno. |
event_handle | varbinary(8) | Somente para uso interno. |
scheduler_address | varbinary(8) | Endereço de memória do agendador associado a esse thread. Para obter mais informações, confira sys.dm_os_schedulers (Transact-SQL). |
worker_address | varbinary(8) | Endereço de memória do trabalhador ligado a esse thread. Para obter mais informações, consulte sys.dm_os_workers (Transact-SQL). |
fiber_context_address | varbinary(8) | Endereço de contexto de fibra interno. Isso só é aplicável quando o SQL Server está configurado para pool leve. |
self_address | varbinary(8) | Ponteiro de consistência interno. |
processor_group | smallint | Aplica-se a: SQL Server 2008 R2 (10.50.x) e versões posteriores. ID do grupo de processadores. |
pdw_node_id | int | Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW) O identificador do nó em que essa distribuição está ativada. |
Permissões
No SQL Server e na Instância Gerenciada de SQL, requer a permissão VIEW SERVER STATE
.
Nos objetivos de serviço do Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##
função de servidor. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE
no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##
são necessárias.
Permissões do SQL Server 2022 e posteriores
É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Notas sobre a versão Linux
Devido à forma como o mecanismo SQL funciona no Linux, algumas dessas informações não correspondem aos dados de diagnóstico do Linux. Por exemplo, os_thread_id
não corresponde ao resultado de ferramentas como ps
,top
ou o procfs (/proc/pid
). Isso se deve à Camada de Abstração de Plataforma (SQLPAL), uma camada entre os componentes do SQL Server e o sistema operacional.
Exemplos
Na inicialização, o SQL Server inicia threads e associa trabalhos a esses threads. No entanto, componentes externos, como um procedimento armazenado estendido, podem iniciar threads no processo do SQL Server. O SQL Server não tem controle sobre esses threads. sys.dm_os_threads pode fornecer informações sobre threads não autorizados que consomem recursos no processo do SQL Server.
A consulta a seguir é usada para localizar trabalhadores, juntamente com o tempo usado para execução, que estão executando threads não iniciados pelo SQL Server.
Observação
Visando a concisão, a consulta a seguir usa um asterisco (*
) na instrução SELECT
. Deve-se evitar o uso do asterisco (*), especialmente em exibições do catálogo, exibições de administração dinâmicas e funções com valor de tabela do sistema. Atualizações e versões futuras do Microsoft SQL Server podem adicionar colunas e alterar a ordem das colunas para essas exibições e funções. Essas mudanças poderão interromper aplicativos que esperam uma ordem e um número de colunas específicos.
SELECT *
FROM sys.dm_os_threads
WHERE started_by_sqlservr = 0;
Confira também
sys.dm_os_workers (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao sistema operacional do SQL Server (Transact-SQL)