Delen via


sys.dm_os_threads (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Geeft een lijst terug van alle SQL Server Operating System-threads die draaien onder het SQL Server-proces.

Opmerking

Om dit te noemen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_threads. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Kolomnaam Gegevenstype Description
thread_address varbinary(8) Geheugenadres (primaire sleutel) van de thread.
started_by_sqlservr bit Geeft de thread-initiator aan.

1 = SQL Server startte de thread.

0 = Een andere component startte de thread, zoals een uitgebreide opgeslagen procedure vanuit SQL Server.
os_thread_id int ID van de thread die door het besturingssysteem wordt toegewezen.
status int Interne statusvlag.
instruction_address varbinary(8) Adres van de instructie die momenteel wordt uitgevoerd.
creation_time datetime Tijd toen deze thread werd aangemaakt.
kernel_time bigint Hoeveelheid kerneltijd die door deze thread wordt gebruikt.
usermode_time bigint Hoeveelheid gebruikerstijd die door deze thread wordt gebruikt.
stack_base_address varbinary(8) Geheugenadres van het hoogste stackadres voor deze thread.
stack_end_address varbinary(8) Geheugenadres van het laagste stackadres van deze thread.
stack_bytes_committed int Aantal bytes dat in de stack wordt gecommitteerd.
stack_bytes_used int Aantal bytes die actief in de thread worden gebruikt.
affiniteit bigint CPU-masker waarop deze thread draait. Dit hangt af van de waarde die is geconfigureerd door de ALTER SERVER CONFIGURATION SET PROCESS AFFINITY-instructie . Kan anders zijn dan de scheduler in het geval van soft-affiniteit.
Priority int Prioriteitswaarde van deze thread.
Lokatie int Gecachete locale LCID voor de thread.
Teken varbinary(8) Gecachte imitatietokenhandle voor de thread.
is_impersonating int Geeft aan of deze thread gebruikmaakt van Win32-imitatie.

1 = De thread gebruikt beveiligingsgegevens die verschillen van de standaard van het proces. Dit geeft aan dat de thread zich voordoet als een entiteit anders dan degene die het proces heeft gecreƫerd.
is_waiting_on_loader_lock int Status van het besturingssysteem of de thread wacht op de loader-lock.
fiber_data varbinary(8) Huidige Win32-vezel die op de thread loopt. Dit is alleen van toepassing wanneer SQL Server is geconfigureerd voor lichtgewicht pooling.
thread_handle varbinary(8) Alleen intern gebruik.
event_handle varbinary(8) Alleen intern gebruik.
scheduler_address varbinary(8) Geheugenadres van de scheduler die aan deze thread is gekoppeld. Voor meer informatie, zie sys.dm_os_schedulers (Transact-SQL).
werknemer_adres varbinary(8) Geheugenadres van de worker die aan deze thread is gebonden. Voor meer informatie, zie sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Interne vezelcontextadres. Dit is alleen van toepassing wanneer SQL Server is geconfigureerd voor lichtgewicht pooling.
self_address varbinary(8) Interne consistentieaanwijzer.
processor_group smallint Van toepassing op: SQL Server 2008 R2 (10.50.x) en later.

Processorgroep-ID.
pdw_node_id int Van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De id voor het knooppunt waarop deze distributie zich bevindt.

Permissions

Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .

Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Notities over de Linux-versie

Door hoe de SQL-engine werkt in Linux, komt een deel van deze informatie niet overeen met de diagnostische gegevens van Linux. Bijvoorbeeld, os_thread_id komt niet overeen met het resultaat van tools zoals ps,top of de procfs (/proc/pid). Dit is te danken aan de Platform Abstraction Layer (SQLPAL), een laag tussen SQL Server-componenten en het besturingssysteem.

Voorbeelden

Bij het opstarten start SQL Server threads en koppelt vervolgens workers aan die threads. Externe componenten, zoals een uitgebreide opgeslagen procedure, kunnen echter threads starten onder het SQL Server-proces. SQL Server heeft geen controle over deze threads. sys.dm_os_threads kan informatie verstrekken over onbetrouwbare threads die resources verbruiken in het SQL Server-proces.

De volgende query wordt gebruikt om workworkers te vinden, samen met de tijd die wordt gebruikt voor uitvoering, die threads draaien die niet door SQL Server zijn gestart.

Opmerking

Voor de beknoptheid gebruikt de volgende query een asterisk (*) in de SELECT stelling. Je moet het gebruik van het asterisk (*) vermijden, vooral tegen catalogusweergaven, dynamische beheerweergaven en systeemtabel-waardige functies. Toekomstige upgrades en releases van Microsoft SQL Server kunnen kolommen toevoegen en de volgorde van kolommen in deze weergaven en functies wijzigen. Deze wijzigingen kunnen applicaties breken die een bepaalde volgorde en aantal kolommen verwachten.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

Zie ook

sys.dm_os_workers (Transact-SQL)
Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)