Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Gibt Informationen über jede einzelne Anforderung zurück, die in SQL Server ausgeführt wird. Weitere Informationen zu Anforderungen finden Sie im Leitfaden zur Thread- und Aufgabenarchitektur.
Hinweis
Informationen dazu aus dediziertem SQL-Pool in Azure Synapse Analytics oder Analytics Platform System (PDW) finden Sie unter sys.dm_pdw_exec_requests. Verwenden Sie sys.dm_exec_requestsfür serverlose SQL-Pool oder Microsoft Fabric .
| Spaltenname | Datentyp | Beschreibung |
|---|---|---|
session_id |
smallint | ID der Sitzung, auf die sich diese Anforderung bezieht. Nicht nullfähig. |
request_id |
int | ID der Anforderung. Ist im Kontext der Sitzung eindeutig. Nicht nullfähig. |
start_time |
datetime | Der Zeitstempel, der angibt, wann die Anforderung eingetroffen ist. Nicht nullfähig. |
status |
nvarchar(30) | Status der Anforderung. Folgenden Werte sind möglich: Hintergrund Rollback Wird ausgeführt runnable sleeping suspended Nicht nullfähig. |
command |
nvarchar(32) | Identifiziert den aktuellen Typ des Befehls, der gerade verarbeitet wird. Gängige Befehlstypen sind u. a. die folgenden: SELECT INSERT UPDATE DELETE BACKUP PROTOKOLL BACKUP DATABASE DBCC FÜR Der Text der Anforderung kann mithilfe sys.dm_exec_sql_text der entsprechenden sql_handle Anforderung abgerufen werden. Interne Systemprozesse legen den Befehl je nach Typ des ausgeführten Tasks fest. Mögliche Tasks sind u. a. die folgenden:SPERRMONITOR CHECKPOINTLAZY WRITER Nicht nullfähig. |
sql_handle |
varbinary(64) | Ein Token, das den Batch oder die gespeicherte Prozedur eindeutig identifiziert, zu der die Abfrage gehört. Nullfähig. |
statement_start_offset |
int | Gibt in Bytes die Startposition der aktuell ausgeführten Anweisung für den aktuell ausgeführten Batch oder das beibehaltene Objekt an, beginnend mit 0. Kann zusammen mit sql_handle, statement_end_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der aktuell ausgeführten Anweisung für die Anforderung verwendet werden. Nullfähig. |
statement_end_offset |
int | Gibt in Bytes die Endposition der aktuell ausgeführten Anweisung für den aktuell ausgeführten Batch oder das beibehaltene Objekt an, beginnend mit 0. Kann zusammen mit sql_handle, statement_start_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der aktuell ausgeführten Anweisung für die Anforderung verwendet werden. Nullfähig. |
plan_handle |
varbinary(64) | Ein Token, das einen Abfrageausführungsplan für einen derzeit ausgeführten Batch eindeutig identifiziert. Nullfähig. |
database_id |
smallint | ID der Datenbank, für die die Anforderung ausgeführt wird. Nicht nullfähig. In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers. |
user_id |
int | ID des Benutzers, der die Anforderung gesendet hat. Nicht nullfähig. |
connection_id |
uniqueidentifier | ID der Verbindung, über die die Anforderung eingetroffen ist. Nullfähig. |
blocking_session_id |
smallint | ID der Sitzung, die die Anforderung blockiert. Ist diese Spalte oder NULL0, wird die Anforderung nicht blockiert, oder die Sitzungsinformationen der Blockierungssitzung sind nicht verfügbar (oder können nicht identifiziert werden). Weitere Informationen finden Sie unter Verstehen und Beheben von Problemen durch Blockierungen in SQL-Server.-2 = Der Besitzer der blockierenden Ressource ist eine verwaiste verteilte Transaktion. -3 = Der Besitzer der blockierenden Ressource ist eine verzögerte Wiederherstellungstransaktion. -4 = session_id der Blockierungshalter konnte zu diesem Zeitpunkt aufgrund von internen Sperreszustandsübergängen nicht bestimmt werden.-5
=
session_id der Blockierungshalter konnte nicht bestimmt werden, da er für diesen Latch-Typ nicht nachverfolgt wird (z. B. für einen SH-Riegel).blocking_session_id
-5 Allein weist nicht auf ein Leistungsproblem hin.
-5 ist ein Hinweis darauf, dass die Sitzung auf eine asynchrone Aktion wartet, bis sie abgeschlossen ist. Vor -5 der Einführung hätte die gleiche Sitzung angezeigt blocking_session_id0, obwohl sie sich noch in einem Wartezustand befand.Je nach Workload kann es sich bei der Beobachtung blocking_session_id = -5 um ein häufiges Vorkommen handeln. |
wait_type |
nvarchar(60) | Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte den Wartetyp zurück. Nullfähig. Wenn eine Anforderung mehrere Vorgänge verwendet, z. B. aufgrund von Intraabfrage-Parallelität, können Vorgänge auf verschiedene Ressourcen mit unterschiedlichen Wartetypen warten. Eine Aufgabe kann blockiert werden, während andere Aufgaben derselben Anforderung die Ausführung fortsetzen. Verwenden Sie sys.dm_os_waiting_tasks, um den Wartetyp und die Dauer für jede Aufgabe und ob sie blockiert ist. Informationen zu Wartetypen finden Sie unter sys.dm_os_wait_stats. |
wait_time |
int | Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte die Dauer des aktuellen Wartevorgangs in Millisekunden an. Nicht nullfähig. |
last_wait_type |
nvarchar(60) | Wenn diese Anforderung zuvor bereits blockiert war, gibt diese Spalte den Typ des letzten Wartevorgangs zurück. Nicht nullfähig. |
wait_resource |
nvarchar(256) | Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte die Ressource zurück, auf die die Anforderung zurzeit wartet. Nicht nullfähig. |
open_transaction_count |
int | Anzahl der für die Anforderung offenen Transaktionen. Nicht nullfähig. |
open_resultset_count |
int | Anzahl der für die Anforderung offenen Resultsets. Nicht nullfähig. |
transaction_id |
bigint | ID der Transaktion, in der diese Anforderung ausgeführt wird. Nicht nullfähig. |
context_info |
varbinary(128) | CONTEXT_INFO Wert der Sitzung. Nullfähig. |
percent_complete |
real | Prozentsatz der für die folgenden Befehle durchgeführten Arbeit:ALTER INDEX REORGANIZEAUTO_SHRINK Option mit ALTER DATABASEBACKUP DATABASEDBCC CHECKDBDBCC CHECKFILEGROUPDBCC CHECKTABLEDBCC INDEXDEFRAGDBCC SHRINKDATABASEDBCC SHRINKFILERECOVERYRESTORE DATABASEROLLBACKTDE ENCRYPTIONNicht nullfähig. |
estimated_completion_time |
bigint | Nur intern. Nicht nullfähig. |
cpu_time |
int | Von der Anforderung beanspruchte CPU-Zeit (in Millisekunden). Nicht nullfähig. |
total_elapsed_time |
int | Gesamtzeit seit dem Eintreffen der Anforderung (in Millisekunden). Nicht nullfähig. |
scheduler_id |
int | ID des Zeitplanungsmoduls, das diese Anforderung plant. Nullfähig. |
task_address |
varbinary(8) | Speicheradresse, die dem Task für diese Anforderung zugeordnet ist. Nullfähig. |
reads |
bigint | Anzahl der von dieser Anforderung ausgeführten Lesevorgänge. Nicht nullfähig. |
writes |
bigint | Anzahl der von dieser Anforderung ausgeführten Schreibvorgänge. Nicht nullfähig. |
logical_reads |
bigint | Anzahl der von dieser Anforderung ausgeführten logischen Lesevorgänge. Nicht nullfähig. |
text_size |
int | TEXTSIZE Vorbereitung auf diese Anfrage. Nicht nullfähig. |
language |
nvarchar(128) | Spracheinstellung für die Anforderung. Nullfähig. |
date_format |
nvarchar(3) | DATEFORMAT Vorbereitung auf die Anfrage. Nullfähig. |
date_first |
smallint | DATEFIRST Vorbereitung auf die Anfrage. Nicht nullfähig. |
quoted_identifier |
bit | 1 = QUOTED_IDENTIFIER ist für die Anfrage AN. Andernfalls ist der Wert 0. Nicht nullfähig. |
arithabort |
bit | 1 = ARITHABORT Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
ansi_null_dflt_on |
bit | 1 = ANSI_NULL_DFLT_ON Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
ansi_defaults |
bit | 1 = ANSI_DEFAULTS Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
ansi_warnings |
bit | 1 = ANSI_WARNINGS Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
ansi_padding |
bit | 1 = ANSI_PADDING Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
ansi_nulls |
bit | 1 = ANSI_NULLS Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
concat_null_yields_null |
bit | 1 = CONCAT_NULL_YIELDS_NULL Einstellung ist für die Anfrage EIN. Andernfalls ist der Wert 0. Nicht nullfähig. |
transaction_isolation_level |
smallint | Isolationsstufe, mit der die Transaktion für diese Anforderung erstellt wird. Nicht nullfähig. 0 = Nicht angegeben 1 = LesenUnverpflichtet 2 = ReadCommitted 3 = Wiederholbar 4 = Serialisierbar 5 = Momentaufnahme |
lock_timeout |
int | Sperrtimeout für diese Anforderung (in Millisekunden). Nicht nullfähig. |
deadlock_priority |
int | DEADLOCK_PRIORITY Vorbereitung auf die Anfrage. Nicht nullfähig. |
row_count |
bigint | Anzahl von Zeilen, die von dieser Anforderung an den Client zurückgegeben wurden. Nicht nullfähig. |
prev_error |
int | Letzter Fehler, der während der Ausführung der Anforderung aufgetreten ist. Nicht nullfähig. |
nest_level |
int | Aktuelle Schachtelungsebene von Code, der für die Anforderung ausgeführt wird. Nicht nullfähig. |
granted_query_memory |
int | Anzahl von Seiten, die der Ausführung einer Abfrage in der Anforderung zugeordnet sind. Nicht nullfähig. |
executing_managed_code |
bit | Gibt an, ob eine bestimmte Anforderung zurzeit CLR-Objekte (Common Language Runtime) ausführt, z. B. Routinen, Typen und Trigger. Die Festlegung gilt für die gesamte Zeit, die sich ein CLR-Objekt im Stapel befindet, selbst wenn Transact-SQL aus der CLR heraus ausgeführt wird. Nicht nullfähig. |
group_id |
int | ID der Arbeitsauslastungsgruppe, zu der diese Abfrage gehört. Nicht nullfähig. |
query_hash |
binary(8) | Binärer Hashwert, der in der Abfrage berechnet wird und zum Identifizieren von Abfragen mit ähnlicher Logik verwendet wird. Sie können den Abfragehash verwenden, um die aggregierte Ressourcennutzung für Abfragen zu ermitteln, die sich nur durch Literalwerte unterscheiden. |
query_plan_hash |
binary(8) | Binärer Hashwert, der im Abfrageausführungsplan wird und zum Identifizieren ähnlicher Abfrageausführungspläne verwendet wird. Sie können diesen Abfrageplan-Hashwert verwenden, um die kumulierten Kosten für Abfragen mit ähnlichen Ausführungsplänen zu suchen. |
statement_sql_handle |
varbinary(64) |
Gilt für: SQL Server 2014 (12.x) und höher.sql_handle der einzelnen Abfrage.Diese Spalte ist NULL , wenn der Abfragespeicher für die Datenbank nicht aktiviert ist. |
statement_context_id |
bigint |
Gilt für: SQL Server 2014 (12.x) und höher. Der optionale Fremdschlüssel für sys.query_context_settings.Diese Spalte ist NULL , wenn der Abfragespeicher für die Datenbank nicht aktiviert ist. |
dop |
int |
Gilt für: SQL Server 2016 (13.x) und höher. Der Grad an Parallelität der Abfrage. |
parallel_worker_count |
int |
Gilt für: SQL Server 2016 (13.x) und höher. Die Anzahl reservierter paralleler Worker, wenn es sich um eine parallele Abfrage handelt. |
external_script_request_id |
uniqueidentifier |
Gilt für: SQL Server 2016 (13.x) und höher. Die externe Skriptanforderungs-ID, die der aktuellen Anforderung zugeordnet ist. |
is_resumable |
bit |
Gilt für: SQL Server 2017 (14.x) und höher Gibt an, ob die Anforderung ein auflösbarer Indexvorgang ist. |
page_resource |
binary(8) |
Gilt für: SQL Server 2019 (15.x) Eine Hexadezimaldarstellung der Seitenressource mit 8 Byte, wenn die Spalte wait_resource eine Seite enthält. Weitere Informationen finden Sie unter sys.fn_PageResCracker. |
page_server_reads |
bigint |
Gilt für: Azure SQL-Datenbank Hyperscale Die Anzahl von Seitenserverlesevorgängen, die von dieser Anforderung ausgeführt werden. Nicht nullfähig. |
dist_statement_id |
uniqueidentifier |
Gilt für: SQL Server 2022 und höhere Versionen, Azure SQL-Datenbank, Azure SQL verwaltete Instanz, Azure Synapse Analytics (nur serverlose Pools) und Microsoft Fabric Eindeutige ID für die Anweisung für die übermittelte Anforderung. Nicht nullfähig. |
Bemerkungen
Für die Ausführung von Code außerhalb von SQL Server (z. B. erweiterte gespeicherte Prozeduren und verteilte Abfragen) muss ein Thread außerhalb der Steuerung des nicht präemptiven Zeitplanungsmoduls ausgeführt werden. Dazu wechselt ein Arbeitsthread in den präemptiven Modus. Zeitwerte, die von dieser dynamischen Verwaltungssicht zurückgegeben werden, schließen nicht die im präemptiven Modus verbrachte Zeit ein.
Beim Ausführen von parallelen Anforderungen im Zeilenmodus weist SQL Server einen Arbeitsthread zu, um die Arbeitsthreads zu koordinieren, die für das Abschließen der ihnen zugewiesenen Tasks zuständig sind. In dieser dynamischen Verwaltungssicht ist nur der Koordinatorthread für die Anforderung sichtbar. Die Spalten reads, writes, logical_reads und row_count werden für den Koordinatorthread nicht aktualisiert. Die Spalten wait_type, wait_time, last_wait_type, wait_resource und granted_query_memory werden für den Koordinatorthread nur aktualisiert. Weitere Informationen finden Sie im Leitfaden zur Thread- und Aufgabenarchitektur.
Die wait_resource Spalte enthält ähnliche Informationen wie resource_descriptionin sys.dm_tran_locks, ist aber anders formatiert.
Erlaubnisse
Wenn der Benutzer über die Berechtigung auf dem Server verfügt VIEW SERVER STATE , sieht der Benutzer alle ausgeführten Sitzungen in der Instanz von SQL Server. Andernfalls sieht der Benutzer nur die aktuelle Sitzung.
VIEW SERVER STATE kann in Azure SQL-Datenbank nicht gewährt werden, daher ist sys.dm_exec_requests immer auf die aktuelle Verbindung beschränkt.
Wenn das sekundäre Replikat in Verfügbarkeitsgruppenszenarien schreibgeschützt festgelegt ist, muss die Verbindung mit der sekundären Datei die Anwendungsabsicht in Verbindungszeichenfolge Parametern durch Hinzufügen applicationintent=readonlyangeben. Andernfalls wird die Zugriffsüberprüfung sys.dm_exec_requests für Datenbanken in der Verfügbarkeitsgruppe nicht übergeben, auch wenn VIEW SERVER STATE die Berechtigung vorhanden ist.
Für SQL Server 2022 (16.x) und spätere Versionen sys.dm_exec_requests wird auf dem Server die Berechtigung SERVER PERFORMANCE STATE benötigtVIEW.
Examples
A. Suchen des Abfragetexts für einen ausgeführten Batch
Im folgenden Beispiel werden sys.dm_exec_requests abgefragt, um die entsprechende Abfrage zu suchen und den sql_handle-Wert aus der Ausgabe zu kopieren.
SELECT * FROM sys.dm_exec_requests;
GO
Verwenden Sie dann zum Abrufen des Anweisungstexts den kopierten sql_handle-Wert mit der Systemfunktion sys.dm_exec_sql_text(sql_handle).
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Aktive Anforderungen anzeigen
Dieses folgende Beispiel zeigt alle derzeit ausgeführten Abfragen in Ihrem SQL Server-Data Warehouse, mit Ausnahme ihrer eigenen Sitzung (@@SPID). Es wird verwendet CROSS APPLY , sys.dm_exec_sql_text um den vollständigen Abfragetext für jede Anforderung abzurufen, und verknüpft mit, um benutzerseitige Hostinformationen einzuschließen sys.dm_exec_sessions . Der session_id <> @@SPID Filter stellt sicher, dass Ihre eigene Abfrage nicht in den Ergebnissen angezeigt wird.
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. Suchen aller Sperren, die ein ausgeführter Batch hält
Das folgende Beispiel fragt sys.dm_exec_requests ab, um den entsprechende Batch zu suchen und die transaction_id aus der Ausgabe zu kopieren.
SELECT * FROM sys.dm_exec_requests;
GO
Verwenden Sie zum Suchen von Sperrinformationen die kopierte transaction_id mit der Systemfunktion 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: Suchen aller aktuell blockierten Anforderungen
Das folgende Beispiel fragt sys.dm_exec_requests ab, um Informationen zu blockierten Anforderungen zu suchen.
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. Sortieren vorhandener Anforderungen nach 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
Verwandte Inhalte
- Dynamische Verwaltungsansichten des Systems
- Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit der Ausführung (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-Objekt
- Handbuch zur Architektur der Abfrageverarbeitung
- Handbuch zur Thread- und Taskarchitektur
- Handbuch zu Transaktionssperren und Zeilenversionsverwaltung
- Verstehen und Beheben von Problemen durch Blockierungen in SQL Server