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 System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Retourneert informatie over elke aanvraag die wordt uitgevoerd in SQL Server. Zie de handleiding thread- en taakarchitectuur voor meer informatie over aanvragen.
Opmerking
Zie sys.dm_pdw_exec_requests om dit aan te roepen vanuit een toegewezen SQL-pool in Azure Synapse Analytics of Analytics Platform System (PDW). Gebruik voor een serverloze SQL-pool of Microsoft Fabric sys.dm_exec_requests
.
Kolomnaam | Gegevenstype | Beschrijving |
---|---|---|
session_id |
smallint | Id van de sessie waaraan deze aanvraag is gerelateerd. Niet nullwaarde. |
request_id |
int | Id van de aanvraag. Uniek in de context van de sessie. Niet nullwaarde. |
start_time |
datum en tijd | Tijdstempel wanneer de aanvraag is aangekomen. Niet nullwaarde. |
status |
nvarchar(30) | Status van de aanvraag. Dit kan een van de volgende waarden zijn: achtergrond Terugdraaien rennen uitvoerbaar aan het slapen opgeschort Niet nullwaarde. |
command |
nvarchar(32) | Identificeert het huidige type opdracht dat wordt verwerkt. Algemene opdrachttypen bevatten de volgende waarden: SELECTEREN INSERT Actualisatie Verwijderen BACK-UPLOGBOEK BACK-UPDATABASE DBCC VOOR De tekst van de aanvraag kan worden opgehaald met behulp van sys.dm_exec_sql_text de bijbehorende sql_handle voor de aanvraag. Interne systeemprocessen stellen de opdracht in op basis van het type taak dat ze uitvoeren. Taken kunnen de volgende waarden bevatten:MONITOR VERGRENDELEN CHECKPOINTLAZY SCHRIJVER Niet nullwaarde. |
sql_handle |
varbinary(64) | Een token waarmee de batch of opgeslagen procedure waarvan de query deel uitmaakt, uniek wordt geïdentificeerd. Nullable. |
statement_start_offset |
int | Geeft in bytes, beginnend met 0, de beginpositie van de huidige uitvoeringsinstructie voor het momenteel uitgevoerde batch- of persistente object aan. Kan samen met de sql_handle , de statement_end_offset en de sys.dm_exec_sql_text dynamische beheerfunctie worden gebruikt om de momenteel uitgevoerde instructie voor de aanvraag op te halen. Nullable. |
statement_end_offset |
int | Geeft in bytes, te beginnen met 0, de eindpositie van de huidige uitvoeringsinstructie voor het momenteel uitgevoerde batch- of persistente object. Kan samen met de sql_handle , de statement_start_offset en de sys.dm_exec_sql_text dynamische beheerfunctie worden gebruikt om de momenteel uitgevoerde instructie voor de aanvraag op te halen. Nullable. |
plan_handle |
varbinary(64) | Een token dat een queryuitvoeringsplan uniek identificeert voor een batch die momenteel wordt uitgevoerd. Nullable. |
database_id |
smallint | De id van de database waarmee de aanvraag wordt uitgevoerd. Niet nullwaarde. In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server. |
user_id |
int | Id van de gebruiker die de aanvraag heeft ingediend. Niet nullwaarde. |
connection_id |
uniqueidentifier | Id van de verbinding waarop de aanvraag is aangekomen. Nullable. |
blocking_session_id |
smallint | Id van de sessie die de aanvraag blokkeert. Als deze kolom wel of NULL 0 niet wordt geblokkeerd, is de aanvraag niet geblokkeerd of is de sessiegegevens van de blokkerende sessie niet beschikbaar (of kunnen niet worden geïdentificeerd). Zie Problemen met blokkerende SQL Server begrijpen en oplossen voor meer informatie.-2 = De blokkerende resource is eigendom van een zwevende gedistribueerde transactie. -3 = De blokkerende resource is eigendom van een uitgestelde hersteltransactie. -4 = session_id van de blokkerende vergrendelingseigenaar kan op dit moment niet worden bepaald vanwege interne vergrendelingsstatusovergangen.-5
=
session_id van de blokkeringseigenaar kan niet worden bepaald omdat deze niet wordt bijgehouden voor dit vergrendelingstype (bijvoorbeeld voor een SH-vergrendeling).Geeft op zichzelf blocking_session_id -5 geen prestatieprobleem aan.
-5 is een indicatie dat de sessie wacht op een asynchrone actie om te voltooien. Voordat -5 de sessie werd geïntroduceerd, zou dezelfde sessie hebben getoond blocking_session_id 0 , ook al was het nog steeds in een wachtstatus.Afhankelijk van de workload kan het observeren blocking_session_id = -5 een veelvoorkomende gebeurtenis zijn. |
wait_type |
nvarchar(60) | Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom het type wachttijd. Nullable. Zie sys.dm_os_wait_stats voor informatie over typen wachttijden. |
wait_time |
int | Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom de duur in milliseconden van de huidige wachttijd. Niet nullwaarde. |
last_wait_type |
nvarchar(60) | Als deze aanvraag eerder is geblokkeerd, retourneert deze kolom het type van de laatste wachttijd. Niet nullwaarde. |
wait_resource |
nvarchar(256) | Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom de resource waarvoor de aanvraag momenteel wacht. Niet nullwaarde. |
open_transaction_count |
int | Aantal transacties dat is geopend voor deze aanvraag. Niet nullwaarde. |
open_resultset_count |
int | Het aantal resultatensets dat voor deze aanvraag is geopend. Niet nullwaarde. |
transaction_id |
bigint | Id van de transactie waarin deze aanvraag wordt uitgevoerd. Niet nullwaarde. |
context_info |
varbinary(128) | CONTEXT_INFO waarde van de sessie. Nullable. |
percent_complete |
echte | Percentage voltooid werk voor de volgende opdrachten:ALTER INDEX REORGANIZE AUTO_SHRINK optie met ALTER DATABASE BACKUP DATABASE DBCC CHECKDB DBCC CHECKFILEGROUP DBCC CHECKTABLE DBCC INDEXDEFRAG DBCC SHRINKDATABASE DBCC SHRINKFILE RECOVERY RESTORE DATABASE ROLLBACK TDE ENCRYPTION Niet nullwaarde. |
estimated_completion_time |
bigint | Alleen intern. Niet nullwaarde. |
cpu_time |
int | CPU-tijd in milliseconden die door de aanvraag wordt gebruikt. Niet nullwaarde. |
total_elapsed_time |
int | De totale tijd die is verstreken in milliseconden sinds de aanvraag is aangekomen. Niet nullwaarde. |
scheduler_id |
int | Id van de planner die deze aanvraag plant. Nullable. |
task_address |
varbinary(8) | Geheugenadres dat is toegewezen aan de taak die aan deze aanvraag is gekoppeld. Nullable. |
reads |
bigint | Het aantal leesbewerkingen dat door deze aanvraag is uitgevoerd. Niet nullwaarde. |
writes |
bigint | Aantal schrijfbewerkingen dat door deze aanvraag wordt uitgevoerd. Niet nullwaarde. |
logical_reads |
bigint | Het aantal logische leesbewerkingen dat door de aanvraag is uitgevoerd. Niet nullwaarde. |
text_size |
int | DE INSTELLING SMS-FORMAAT voor deze aanvraag. Niet nullwaarde. |
language |
nvarchar(128) | Taalinstelling voor de aanvraag. Nullable. |
date_format |
nvarchar(3) | DATEFORMAT-instelling voor de aanvraag. Nullable. |
date_first |
smallint | DATEFIRST-instelling voor de aanvraag. Niet nullwaarde. |
quoted_identifier |
bit | 1 = QUOTED_IDENTIFIER is aan voor de aanvraag. Anders is het 0. Niet nullwaarde. |
arithabort |
bit | 1 = ARITHABORT-instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
ansi_null_dflt_on |
bit | 1 = ANSI_NULL_DFLT_ON instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
ansi_defaults |
bit | 1 = ANSI_DEFAULTS instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
ansi_warnings |
bit | 1 = ANSI_WARNINGS instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
ansi_padding |
bit | 1 = ANSI_PADDING instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
ansi_nulls |
bit | 1 = ANSI_NULLS instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
concat_null_yields_null |
bit | 1 = CONCAT_NULL_YIELDS_NULL instelling is ingeschakeld voor de aanvraag. Anders is het 0. Niet nullwaarde. |
transaction_isolation_level |
smallint | Isolatieniveau waarmee de transactie voor deze aanvraag wordt gemaakt. Niet nullwaarde. 0 = Niet opgegeven 1 = ReadUncommitted 2 = ReadCommitted 3 = Herhaalbaar 4 = Serializeerbaar 5 = Momentopname |
lock_timeout |
int | Vergrendelingstime-outperiode in milliseconden voor deze aanvraag. Niet nullwaarde. |
deadlock_priority |
int | DEADLOCK_PRIORITY instelling voor de aanvraag. Niet nullwaarde. |
row_count |
bigint | Het aantal rijen dat door deze aanvraag aan de client is geretourneerd. Niet nullwaarde. |
prev_error |
int | Laatste fout die is opgetreden tijdens de uitvoering van de aanvraag. Niet nullwaarde. |
nest_level |
int | Huidig nestniveau van code dat wordt uitgevoerd op de aanvraag. Niet nullwaarde. |
granted_query_memory |
int | Het aantal pagina's dat is toegewezen aan de uitvoering van een query op de aanvraag. Niet nullwaarde. |
executing_managed_code |
bit | Hiermee wordt aangegeven of een specifieke aanvraag momenteel algemene runtimeobjecten voor taal uitvoert, zoals routines, typen en triggers. Het is ingesteld voor de volledige tijd dat een gemeenschappelijk runtime-object voor taal op de stack staat, zelfs tijdens het uitvoeren van Transact-SQL vanuit een algemene taalruntime. Niet nullwaarde. |
group_id |
int | Id van de workloadgroep waartoe deze query behoort. Niet nullwaarde. |
query_hash |
binary(8) | Binaire hashwaarde die wordt berekend op de query en wordt gebruikt om query's met vergelijkbare logica te identificeren. U kunt de query-hash gebruiken om het geaggregeerde resourcegebruik te bepalen voor query's die alleen verschillen per letterlijke waarden. |
query_plan_hash |
binary(8) | Binaire hashwaarde berekend op het queryuitvoeringsplan en wordt gebruikt om vergelijkbare queryuitvoeringsplannen te identificeren. U kunt hash van het queryplan gebruiken om de cumulatieve kosten van query's met vergelijkbare uitvoeringsplannen te vinden. |
statement_sql_handle |
varbinary(64) |
Van toepassing op: SQL Server 2014 (12.x) en hoger.sql_handle van de afzonderlijke query.Deze kolom is NULL als Query Store niet is ingeschakeld voor de database. |
statement_context_id |
bigint |
Van toepassing op: SQL Server 2014 (12.x) en hoger. De optionele refererende sleutel aan sys.query_context_settings .Deze kolom is NULL als Query Store niet is ingeschakeld voor de database. |
dop |
int |
Van toepassing op: SQL Server 2016 (13.x) en hoger. De mate van parallelle uitvoering van de query. |
parallel_worker_count |
int |
Van toepassing op: SQL Server 2016 (13.x) en hoger. Het aantal gereserveerde parallelle werkrollen als dit een parallelle query is. |
external_script_request_id |
uniqueidentifier |
Van toepassing op: SQL Server 2016 (13.x) en hoger. De externe scriptaanvraag-id die is gekoppeld aan de huidige aanvraag. |
is_resumable |
bit |
van toepassing op: SQL Server 2017 (14.x) en hoger. Geeft aan of de aanvraag een hervatbare indexbewerking is. |
page_resource |
binary(8) |
van toepassing op: SQL Server 2019 (15.x) Een hexadecimale weergave van 8 bytes van de paginaresource als de wait_resource kolom een pagina bevat. Zie sys.fn_PageResCracker voor meer informatie. |
page_server_reads |
bigint |
Van toepassing op: Azure SQL Database Hyperscale Aantal paginaserverleesbewerkingen uitgevoerd door deze aanvraag. Niet nullwaarde. |
dist_statement_id |
uniqueidentifier |
Van toepassing op: SQL Server 2022 en latere versies, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (alleen serverloze pools) en Microsoft Fabric Unieke id voor de instructie voor de ingediende aanvraag. Niet nullwaarde. |
Opmerkingen
Als u code wilt uitvoeren die zich buiten SQL Server bevindt (bijvoorbeeld uitgebreide opgeslagen procedures en gedistribueerde query's), moet een thread buiten het beheer van de niet-preventieve scheduler worden uitgevoerd. Hiervoor schakelt een werkrol over naar de voorlopige modus. Tijdwaarden die door deze dynamische beheerweergave worden geretourneerd, bevatten geen tijd die is besteed aan de voorlopige modus.
Bij het uitvoeren van parallelle aanvragen in de rijmodus wijst SQL Server een werkrolthread toe om de werkrolthreads te coördineren die verantwoordelijk zijn voor het voltooien van taken die aan hen zijn toegewezen. In deze DMV is alleen de coördinatorthread zichtbaar voor de aanvraag. De kolommenreads
, writes
en logical_reads
row_count
worden niet bijgewerkt voor de coördinatorthread. De kolommenwait_type
, wait_time
, , last_wait_type
en wait_resource
granted_query_memory
worden alleen bijgewerkt voor de coördinatorthread. Zie de handleiding Thread en taakarchitectuurvoor meer informatie.
De wait_resource
kolom bevat vergelijkbare informatie resource_description
in sys.dm_tran_locks , maar is anders opgemaakt.
Machtigingen
Als de gebruiker gemachtigd is VIEW SERVER STATE
voor de server, ziet de gebruiker alle uitvoeringssessies op het exemplaar van SQL Server. Anders ziet de gebruiker alleen de huidige sessie.
VIEW SERVER STATE
kan niet worden verleend in Azure SQL Database, dus sys.dm_exec_requests
is altijd beperkt tot de huidige verbinding.
In scenario's met beschikbaarheidsgroepen, als de secundaire replica is ingesteld op alleen-lezen, moet de verbinding met de secundaire de toepassingsintentie opgeven in de parameters van de verbindingsreeks door toe te voegen applicationintent=readonly
. Anders wordt de toegangscontrole sys.dm_exec_requests
niet doorgegeven aan databases in de beschikbaarheidsgroep, zelfs niet als VIEW SERVER STATE
de machtiging aanwezig is.
Voor SQL Server 2022 (16.x) en latere versies sys.dm_exec_requests
is de machtiging VIEW SERVER PERFORMANCE STATE op de server vereist.
Voorbeelden
Eén. De querytekst voor een actieve batch zoeken
In het volgende voorbeeld worden query's uitgevoerd sys.dm_exec_requests
om de interessante query te vinden en de query uit de uitvoer te kopiëren sql_handle
.
SELECT * FROM sys.dm_exec_requests;
GO
Als u vervolgens de instructietekst wilt ophalen, gebruikt u de gekopieerde sql_handle
functie met de systeemfunctie sys.dm_exec_sql_text(sql_handle)
.
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Actieve aanvragen weergeven
In dit volgende voorbeeld ziet u alle query's die momenteel worden uitgevoerd in uw SQL Server-datawarehouse, met uitzondering van uw eigen sessie (@@SPID
). Hierbij wordt CROSS APPLY
sys.dm_exec_sql_text
gebruikgemaakt van het ophalen van de volledige querytekst voor elke aanvraag en wordt samengevoegd om sys.dm_exec_sessions
alle hostgegevens van de gebruiker op te nemen. Het session_id <> @@SPID
filter zorgt ervoor dat u uw eigen query niet in de resultaten ziet.
SELECT r.session_id,
r.status,
r.command,
r.start_time,
r.total_elapsed_time / 1000.00 AS elapsed_seconds,
r.cpu_time / 1000.00 AS cpu_seconds,
r.reads,
r.writes,
r.logical_reads,
r.row_count,
s.login_name,
s.host_name,
t.text AS query_text
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_exec_sessions AS s
ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id <> @@SPID
ORDER BY r.start_time DESC;
C. Alle vergrendelingen zoeken die een actieve batch vasthoudt
In het volgende voorbeeld worden query's uitgevoerd sys.dm_exec_requests
om de interessante batch te vinden en de bijbehorende batch uit de uitvoer te kopiëren transaction_id
.
SELECT * FROM sys.dm_exec_requests;
GO
Als u vervolgens vergrendelingsgegevens wilt zoeken, gebruikt u de gekopieerde transaction_id
gegevens met de systeemfunctie sys.dm_tran_locks
.
SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
AND request_owner_id = < copied transaction_id >;
GO
D. Alle momenteel geblokkeerde aanvragen zoeken
In het volgende voorbeeld worden query's uitgevoerd sys.dm_exec_requests
om informatie over geblokkeerde aanvragen te vinden.
SELECT session_id,
status,
blocking_session_id,
wait_type,
wait_time,
wait_resource,
transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';
GO
E. Bestaande aanvragen bestellen op CPU
SELECT [req].[session_id],
[req].[start_time],
[req].[cpu_time] AS [cpu_time_ms],
OBJECT_NAME([ST].[objectid], [ST].[dbid]) AS [ObjectName],
SUBSTRING(
REPLACE(
REPLACE(
SUBSTRING(
[ST].[text], ([req].[statement_start_offset] / 2) + 1,
((CASE [req].[statement_end_offset]
WHEN -1 THEN DATALENGTH([ST].[text])
ELSE [req].[statement_end_offset]
END - [req].[statement_start_offset]
) / 2
) + 1
), CHAR(10), ' '
), CHAR(13), ' '
), 1, 512
) AS [statement_text]
FROM
[sys].[dm_exec_requests] AS [req]
CROSS APPLY [sys].dm_exec_sql_text([req].[sql_handle]) AS [ST]
ORDER BY
[req].[cpu_time] DESC;
GO
Verwante inhoud
- Systeemdynamische beheerweergaven
- uitvoeringsgerelateerde dynamische beheerweergaven en -functies (Transact-SQL)
- sys.dm_os_memory_clerks (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- sys.dm_exec_query_memory_grants (Transact-SQL)
- sys.dm_exec_query_plan (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- SQL Server, SQL Statistics-object
- Architectuurhandleiding voor query-verwerking
- Handleiding voor thread- en taakarchitectuur
- Handleiding voor transactievergrendeling en rijversiebeheer
- Problemen met blokkerende SQL Server begrijpen en oplossen