Compartilhar via


sys.dm_os_threads (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

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 Básico, S0 e S1 do Banco de Dados SQL e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Microsoft Entra ou a ##MS_ServerStateReader## associação na função de servidor são necessárias. 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)