Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
Geeft een rij terug voor elke werknemer in het systeem. Voor meer informatie over werkers, zie de Thread and Task Architecture Guide.
Opmerking
Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_workers. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| werknemer_adres | varbinary(8) | Geheugenadres van de werknemer. |
| status | int | Alleen intern gebruik. |
| is_preemptive | bit | 1 = Werknemer werkt met preventieve planning. Elke worker die externe code draait, wordt onder preëmpieve planning uitgevoerd. |
| is_fiber | bit | 1 = Werknemer draait met lichtgewicht pooling. Voor meer informatie, zie sp_configure (Transact-SQL). |
| is_sick | bit | 1 = Werknemer zit vast in het proberen een spin-lock te verkrijgen. Als deze bit is ingesteld, kan dit wijzen op een probleem met contentie op een vaak geraadpleegd object. |
| is_in_cc_exception | bit | 1 = Worker verwerkt momenteel een niet-SQL Server-uitzondering. |
| is_fatal_exception | bit | Geeft aan of deze werknemer een fatale uitzondering heeft gekregen. |
| is_inside_catch | bit | 1 = Werker behandelt momenteel een uitzondering. |
| is_in_polling_io_completion_routine | bit | 1 = Werknemer voert momenteel een I/O-voltooiingsroutine uit voor een lopende I/O. Voor meer informatie, zie sys.dm_io_pending_io_requests (Transact-SQL). |
| context_switch_count | int | Aantal contextwisselingen in de scheduler die door deze werker worden uitgevoerd. |
| pending_io_count | int | Aantal fysieke I/O's die door deze medewerker worden uitgevoerd. |
| pending_io_byte_count | bigint | Totaal aantal bytes voor alle lopende fysieke I/O's voor deze worker. |
| pending_io_byte_average | int | Gemiddeld aantal bytes voor fysieke I/O's voor deze werker. |
| wait_started_ms_ticks | bigint | Op een gegeven moment, in ms_ticks, wanneer deze werknemer in de OPSCHORTENDE toestand kwam. Door deze waarde af te trekken van ms_ticks in sys.dm_os_sys_info geeft het aantal milliseconden dat de werknemer heeft gewacht terug. |
| wait_resumed_ms_ticks | bigint | Op een gegeven moment, in ms_ticks, toen deze werknemer de RUNNABLE staat binnenkwam. Door deze waarde af te trekken van ms_ticks in sys.dm_os_sys_info geeft het aantal milliseconden dat de werknemer in de uitvoerbare wachtrij heeft gezeten, terug. |
| task_bound_ms_ticks | bigint | Op een gegeven moment, in ms_ticks, wanneer een taak aan deze werknemer is gebonden. |
| worker_created_ms_ticks | bigint | Op een tijdstip, in ms_ticks, wanneer een werknemer wordt gecreëerd. |
| exception_num | int | Foutnummer van de laatste uitzondering die deze werknemer tegenkwam. |
| exception_severity | int | De ernst van de laatste uitzondering die deze medewerker tegenkwam. |
| exception_address | varbinary(8) | Code-adres dat de uitzondering opriep |
| affiniteit | bigint | De draadaffiniteit van de werker. Komt overeen met de affiniteit van de draad in sys.dm_os_threads (Transact-SQL). |
| state | nvarchar(60) | Werknemersstaat. Dit kan een van de volgende waarden zijn: INIT = Worker wordt momenteel geïnitialiseerd. RUNNING = Werknemer draait momenteel ofwel niet-preventief of preventief. RUNNABLE = De worker is klaar om te draaien op de scheduler. GESCHORST = De werknemer is momenteel opgeschorst en wacht op een gebeurtenis om een signaal te sturen. |
| start_quantum | bigint | Tijd, in milliseconden, aan het begin van de huidige run van deze werknemer. |
| end_quantum | bigint | Tijd, in milliseconden, aan het einde van de huidige run van deze arbeider. |
| last_wait_type | nvarchar(60) | Soort last wait. Voor een lijst van wachttypes, zie sys.dm_os_wait_stats (Transact-SQL). |
| return_code | int | Retourwaarde van de laatste wachttijd. Dit kan een van de volgende waarden zijn: 0 =SUCCES 3 = IMPASSE 4 = PREMATURE_WAKEUP 258 = TIMEOUT |
| quantum_used | bigint | Alleen intern gebruik. |
| max_quantum | bigint | Alleen intern gebruik. |
| boost_count | int | Alleen intern gebruik. |
| tasks_processed_count | int | Aantal taken dat deze medewerker heeft verwerkt. |
| fiber_address | varbinary(8) | Geheugenadres van de vezel waarmee deze werknemer is gekoppeld. NULL = SQL Server is niet geconfigureerd voor lichtgewicht pooling. |
| taak_adres | varbinary(8) | Geheugenadres van de huidige taak. Voor meer informatie, zie sys.dm_os_tasks (Transact-SQL). |
| memory_object_address | varbinary(8) | Geheugenadres van het werkgeheugenobject. Voor meer informatie, zie sys.dm_os_memory_objects (Transact-SQL). |
| thread_address | varbinary(8) | Geheugenadres van de thread die aan deze worker is gekoppeld. Voor meer informatie, zie sys.dm_os_threads (Transact-SQL). |
| signal_worker_address | varbinary(8) | Geheugenadres van de werknemer die dit object als laatste heeft gesignaleerd. Voor meer informatie, zie sys.dm_os_workers. |
| scheduler_address | varbinary(8) | Geheugenadres van de planner. Voor meer informatie, zie sys.dm_os_schedulers (Transact-SQL). |
| processor_group | smallint | Slaat de processorgroep-ID op die aan deze thread is toegewezen. |
| pdw_node_id | int |
van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW) De id voor het knooppunt waarop deze distributie zich bevindt. |
Opmerkingen
Als de worker-staat RUNNING is en de worker non-preceptively draait, komt het worker-adres overeen met de active_worker_address in sys.dm_os_schedulers.
Wanneer een werknemer die op een gebeurtenis wacht wordt gesignaleerd, wordt de werknemer vooraan in de loopbare wachtrij geplaatst. SQL Server maakt het mogelijk dat dit duizend keer achter elkaar gebeurt, waarna de worker aan het einde van de wachtrij wordt geplaatst. Het verplaatsen van een werknemer naar het einde van de wachtrij heeft enige prestatie-implicaties.
Permissions
Voor SQL Server is VIEW SERVER STATE machtiging vereist.
Op SQL Database Premium Tiers is toestemming VIEW DATABASE STATE in de database vereist. Op SQL Database Standard en Basic Tiers vereist het Server Admin rollidmaatschap of een Azure Active Directory admin account.
Machtigingen voor SQL Server 2022 en hoger
Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.
Voorbeelden
Je kunt de volgende zoekopdracht gebruiken om te achterhalen hoe lang een werknemer al in een OPGESCHORTE of RUNNABLE toestand draait.
SELECT
t1.session_id,
CONVERT(varchar(10), t1.status) AS status,
CONVERT(varchar(15), t1.command) AS command,
CONVERT(varchar(10), t2.state) AS worker_state,
w_suspended =
CASE t2.wait_started_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_started_ms_ticks
END,
w_runnable =
CASE t2.wait_resumed_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_resumed_ms_ticks
END
FROM sys.dm_exec_requests AS t1
INNER JOIN sys.dm_os_workers AS t2
ON t2.task_address = t1.task_address
CROSS JOIN sys.dm_os_sys_info AS t3
WHERE t1.scheduler_id IS NOT NULL;
Hier is het resultatenoverzicht.
session_id status command worker_state w_suspended w_runnable
---------- ---------- --------------- ------------ ----------- --------------------
4 background LAZY WRITER SUSPENDED 688 688
6 background LOCK MONITOR SUSPENDED 4657 4657
19 background BRKR TASK SUSPENDED 603820344 603820344
14 background BRKR EVENT HNDL SUSPENDED 63583641 63583641
51 running SELECT RUNNING 0 0
2 background RESOURCE MONITO RUNNING 0 603825954
3 background LAZY WRITER SUSPENDED 422 422
7 background SIGNAL HANDLER SUSPENDED 603820485 603820485
13 background TASK MANAGER SUSPENDED 603824704 603824704
18 background BRKR TASK SUSPENDED 603820407 603820407
9 background TRACE QUEUE TAS SUSPENDED 454 454
52 suspended SELECT SUSPENDED 35094 35094
1 background RESOURCE MONITO RUNNING 0 603825954
In de uitvoer, wanneer w_runnable en w_suspended gelijk zijn, vertegenwoordigt dit de tijd waarin de werknemer in de SUSPENDE-toestand is. Anders w_runnable vertegenwoordigt dit de tijd die de werknemer in de RUNNABLE toestand doorbrengt. In de output is SUSPENDED de sessie 52 voor 35,094 milliseconden.
Zie ook
Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)
Architectuurhandleiding voor query-verwerking
Thread- en Taakarchitectuurgids