Partilhar via


sys.dm_os_threads (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Retorna uma lista de todos os threads do Sistema Operativo SQL Server que estão a correr sob o processo SQL Server.

Observação

Para chamar isto do Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_threads. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Description
thread_address varbinary(8) Endereço de memória (Chave Primária) da thread.
started_by_sqlservr bit Indica o iniciador do thread.

1 = SQL Server iniciou a thread.

0 = Outro componente iniciou a thread, como um procedimento armazenado estendido dentro do SQL Server.
os_thread_id int ID do thread atribuído pelo sistema operativo.
estado int Bandeira de estado interna.
instruction_address varbinary(8) Endereço da instrução que está atualmente a ser executada.
creation_time datetime A altura em que este tópico foi criado.
kernel_time bigint Quantidade de tempo de kernel utilizada por este tópico.
usermode_time bigint Quantidade de tempo de utilizador que este tópico utiliza.
stack_base_address varbinary(8) Endereço de memória do endereço de pilha mais alto para este tópico.
stack_end_address varbinary(8) Endereço de memória do endereço de pilha mais baixo deste tópico.
stack_bytes_committed int Número de bytes que estão comprometidos na pilha.
stack_bytes_used int Número de bytes que estão a ser ativamente usados na thread.
afinidade bigint Máscara de CPU onde este tópico está a correr. Isto depende do valor configurado pela instrução ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Pode ser diferente do scheduler no caso de soft affinity.
Priority int Valor de prioridade deste tópico.
Localidade int LCID local cacheado para o tópico.
Símbolo varbinary(8) Handle de token de personificação em cache para a thread.
is_impersonating int Indica se este tópico está a usar a imitação do Win32.

1 = A thread está a usar credenciais de segurança diferentes do padrão do processo. Isto indica que o fio está a fazer-se passar por uma entidade diferente daquela que criou o processo.
is_waiting_on_loader_lock int Estado do sistema operativo sobre se a thread está à espera do bloqueio do loader.
fiber_data varbinary(8) Fibra Win32 atual que está a correr na thread. Isto só se aplica quando o SQL Server está configurado para pooling leve.
thread_handle varbinary(8) Apenas para uso interno.
event_handle varbinary(8) Apenas para uso interno.
scheduler_address varbinary(8) Endereço de memória do agendador associado a este thread. Para mais informações, consulte sys.dm_os_schedulers (Transact-SQL).
endereço_do_trabalhador varbinary(8) Endereço de memória do trabalhador que está ligado a este fio. Para mais informações, consulte sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Endereço de contexto interno da fibra. Isto só se aplica quando o SQL Server está configurado para pooling leve.
self_address varbinary(8) Apontador de consistência interna.
processor_group smallint Aplica-se a: SQL Server 2008 R2 (10.50.x) e versões posteriores.

ID do grupo do processador.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que esta distribuição se encontra.

Permissions

No SQL Server e na Instância Gerenciada do SQL, requer VIEW SERVER STATE permissão.

No Banco de Dados SQL Basic, S0e S1 objetivos de serviço e para bancos de dados em pools elásticos , a conta de de administrador do servidor, a conta de de administrador do Microsoft Entra ou a associação aode função de servidor ##MS_ServerStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Notas sobre a versão Linux

Devido ao funcionamento do motor SQL no Linux, parte desta informação não corresponde aos dados de diagnóstico do Linux. Por exemplo, os_thread_id não corresponde ao resultado de ferramentas como ps,top ou os procfs (/proc/pid). Isto deve-se à Camada de Abstração de Plataforma (SQLPAL), uma camada entre os componentes do SQL Server e o sistema operativo.

Examples

No arranque, o SQL Server inicia threads e depois associa os trabalhadores a esses threads. No entanto, componentes externos, como um procedimento armazenado estendido, podem iniciar threads no processo SQL Server. O SQL Server não tem controlo sobre estes threads. sys.dm_os_threads pode fornecer informações sobre threads não autorizados que consomem recursos no processo SQL Server.

A consulta seguinte é usada para encontrar trabalhadores, juntamente com o tempo de execução, que estão a executar threads que não foram iniciados pelo SQL Server.

Observação

Para concisão, a consulta seguinte utiliza um asterisco (*) na SELECT afirmação. Deve evitar usar o asterisco (*), especialmente em visualizações de catálogo, vistas de gestão dinâmica e funções de tabela de sistema. Futuras atualizações e lançamentos do Microsoft SQL Server poderão adicionar colunas e alterar a ordem das colunas a estas vistas e funções. Estas alterações podem quebrar aplicações que exigem uma determinada ordem e número de colunas.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

Consulte também

sys.dm_os_workers (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao sistema operacional SQL Server (Transact-SQL)