Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Returnerar en rad för varje arbetare i systemet. För mer information om arbetare, se Tråd- och uppgiftsarkitekturguiden.
Anmärkning
För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_os_workers. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
| arbetare_adress | varbinary(8) | Minnesadressen till arbetaren. |
| status | int | Endast intern användning. |
| is_preemptive | bit | 1 = Arbetaren kör med förebyggande schemaläggning. Alla arbetare som kör extern kod körs under preemptiv schemaläggning. |
| is_fiber | bit | 1 = Arbetaren kör med lättviktspooling. För mer information, se sp_configure (Transact-SQL). |
| is_sick | bit | 1 = Arbetaren fastnar i försöken att få ett spinnlås. Om denna bit är satt kan det indikera ett problem med konkurrens på ett ofta åtkommet objekt. |
| is_in_cc_exception | bit | 1 = Worker hanterar för närvarande ett icke-SQL Server-undantag. |
| is_fatal_exception | bit | Specificerar om denna arbetare fick ett fatalt undantag. |
| is_inside_catch | bit | 1 = Arbetaren hanterar för närvarande ett undantag. |
| is_in_polling_io_completion_routine | bit | 1 = Arbetaren kör för närvarande en I/O-slutföranderutin för en väntande I/O. För mer information, se sys.dm_io_pending_io_requests (Transact-SQL). |
| context_switch_count | int | Antal schemaläggarkontextbyten som utförs av denna arbetare. |
| pending_io_count | int | Antal fysiska I/O som utförs av denna arbetare. |
| pending_io_byte_count | bigint | Totalt antal byte för alla pågående fysiska I/O:er för denna arbetare. |
| pending_io_byte_average | int | Genomsnittligt antal bytes för fysiska I/O:er för denna arbetare. |
| wait_started_ms_ticks | bigint | Tidpunkt, i ms_ticks, när denna arbetare gick in i SUSPENDERAT tillstånd. Genom att subtrahera detta värde från ms_ticks i sys.dm_os_sys_info returneras antalet millisekunder som arbetaren har väntat. |
| wait_resumed_ms_ticks | bigint | Tidpunkt, i ms_ticks, när denna arbetare gick in i RUNNABLE-tillståndet. Genom att subtrahera detta värde från ms_ticks i sys.dm_os_sys_info återges antalet millisekunder som arbetaren har varit i den körbara kön. |
| task_bound_ms_ticks | bigint | Tidpunkt, i ms_ticks, när en uppgift är bunden till denna arbetare. |
| worker_created_ms_ticks | bigint | Tidpunkt, i ms_ticks, när en arbetare skapas. |
| exception_num | int | Felnummer för det senaste undantaget som denna arbetare stötte på. |
| exception_severity | int | Allvarligheten i det sista undantaget som denna arbetare stötte på. |
| exception_address | varbinary(8) | Kodadressen som kastade undantaget |
| samhörighet | bigint | Arbetarens trådaffinitet. Matchar trådens affinitet i sys.dm_os_threads (Transact-SQL). |
| state | nvarchar(60) | Arbetarstat. Kan vara något av följande värden: INIT = Worker initieras för tillfället. RUNNING = Arbetaren körs för närvarande antingen icke-preemptivt eller preemptivt. RUNNABLE = Arbetaren är redo att köras på schemaläggaren. SUSPENDERAD = Arbetaren är för närvarande avstängd och väntar på att en händelse ska skicka en signal. |
| start_quantum | bigint | Tid, i millisekunder, i början av den aktuella körningen av denna arbetare. |
| end_quantum | bigint | Tid, i millisekunder, i slutet av den nuvarande perioden för denna arbetare. |
| last_wait_type | nvarchar(60) | Typ av sista väntan. För en lista över väntetyper, se sys.dm_os_wait_stats (Transact-SQL). |
| return_code | int | Returvärde från senaste väntan. Kan vara något av följande värden: 0 =FRAMGÅNG 3 = DÖDLÄGE 4 = PREMATURE_WAKEUP 258 = TIMEOUT |
| quantum_used | bigint | Endast intern användning. |
| max_quantum | bigint | Endast intern användning. |
| boost_count | int | Endast intern användning. |
| tasks_processed_count | int | Antal uppgifter som denna arbetare hanterade. |
| fiber_address | varbinary(8) | Minnesadressen för fibern som denna arbetare är kopplad till. NULL = SQL Server är inte konfigurerad för lättviktspoolning. |
| uppgiftsadress | varbinary(8) | Minnesadressen för den aktuella uppgiften. För mer information, se sys.dm_os_tasks (Transact-SQL). |
| memory_object_address | varbinary(8) | Minnesadressen till arbetsminnesobjektet. För mer information, se sys.dm_os_memory_objects (Transact-SQL). |
| thread_address | varbinary(8) | Minnesadressen till tråden som är kopplad till denna arbetare. För mer information, se sys.dm_os_threads (Transact-SQL). |
| signal_worker_address | varbinary(8) | Minnesadressen till arbetaren som senast signalerade detta objekt. För mer information, se sys.dm_os_workers. |
| scheduler_address | varbinary(8) | Minnesadressen till schemaläggaren. För mer information, se sys.dm_os_schedulers (Transact-SQL). |
| processor_group | smallint | Lagrar processorgrupps-ID:t som är tilldelat denna tråd. |
| pdw_node_id | int |
gäller för: Azure Synapse Analytics, Analytics Platform System (PDW) Identifieraren för noden som den här fördelningen är på. |
Anmärkningar
Om arbetarens tillstånd är KÖRANDE och arbetaren kör icke-preemptivt, matchar arbetaradressen active_worker_address i sys.dm_os_schedulers.
När en arbetare som väntar på ett evenemang signaleras placeras arbetaren längst fram i den körbara kön. SQL Server tillåter detta att ske tusen gånger i rad, varefter arbetaren placeras längst bak i kön. Att flytta en arbetare till slutet av kön har vissa prestandakonsekvenser.
Permissions
På SQL Server kräver VIEW SERVER STATE behörighet.
På SQL Database Premium Tiers krävs VIEW DATABASE STATE behörighet i databasen. På SQL Database Standard och Basic Tiers krävs rollmedlemskap Server Admin eller konto Azure Active Directory admin .
Behörigheter för SQL Server 2022 och senare
Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.
Examples
Du kan använda följande fråga för att ta reda på hur länge en arbetare har varit i drift i ett SUSPENDERAT eller RUNNABLET tillstånd.
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;
Här är resultatet.
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
I utdatan, när w_runnable och w_suspended är lika, representerar detta den tid då arbetaren befinner sig i SUSPENDER-tillståndet. Annars w_runnable representerar den tid som arbetaren tillbringar i det RUNNABLE-tillståndet. I utdata är SUSPENDED sessionen 52 i 35,094 millisekunder.
Se även
SQL Server-operativsystemrelaterade dynamiska hanteringsvyer (Transact-SQL)
arkitekturguide för frågebearbetning
Tråd- och uppgiftsarkitekturguide