sys.dm_exec_requests (Transact-SQL)

Gibt Informationen über jede einzelne Anforderung, die in SQL Server ausgeführt wird, zurück.

HinweisHinweis

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.

Spaltenname

Datentyp

Beschreibung

session_id

smallint

ID der Sitzung, auf die sich diese Anforderung bezieht. Lässt keine NULL-Werte zu.

request_id

int

ID der Anforderung. Ist im Kontext der Sitzung eindeutig. Lässt keine NULL-Werte zu.

start_time

datetime

Der Timestamp, der angibt, wann die Anforderung eingetroffen ist. Lässt keine NULL-Werte zu.

status

nvarchar(30)

Status der Anforderung. Dabei kann es sich um die folgenden Typen handeln:

  • Hintergrund

  • Wird ausgeführt

  • Ausführbar

  • Ruhezustand

  • Angehalten

Lässt keine NULL-Werte zu.

command

nvarchar(32)

Identifiziert den aktuellen Typ des Befehls, der gerade verarbeitet wird. Als allgemeine Befehlstypen sind die folgenden möglich:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • BACKUP LOG

  • BACKUP DATABASE

  • DBCC

  • FOR

Der Text der Anforderung kann mit sys.dm_exec_sql_text mit der entsprechenden sql_handle für die Anforderung abgerufen werden. Interne Systemprozesse legen den Befehl je nach Typ des ausgeführten Tasks fest. Mögliche Tasks sind z. B. die folgenden:

  • LOCK MONITOR

  • CHECKPOINTLAZY

  • WRITER

Lässt keine NULL-Werte zu.

sql_handle

varbinary(64)

Hashzuordnung des SQL-Texts der Anforderung. Lässt NULL-Werte zu.

statement_start_offset

int

Anzahl von Zeichen im derzeit ausgeführten Batch oder in der derzeit ausgeführten gespeicherten Prozedur, an der die derzeit ausgeführte Anweisung beginnt. Kann zusammen mit sql_handle, statement_end_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der zurzeit ausgeführten Anweisung für die Anforderung verwendet werden. Lässt NULL-Werte zu.

statement_end_offset

int

Anzahl von Zeichen im derzeit ausgeführten Batch oder in der derzeit ausgeführten gespeicherten Prozedur, an der die derzeit ausgeführte Anweisung endet. Kann zusammen mit sql_handle, statement_end_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der zurzeit ausgeführten Anweisung für die Anforderung verwendet werden. Lässt NULL-Werte zu.

plan_handle

varbinary(64)

Hashzuordnung des Plans für die SQL-Ausführung. Lässt NULL-Werte zu.

database_id

smallint

ID der Datenbank, für die die Anforderung ausgeführt wird. Lässt keine NULL-Werte zu.

user_id

int

ID des Benutzers, der die Anforderung gesendet hat. Lässt keine NULL-Werte zu.

connection_id

uniqueidentifier

ID der Verbindung, über die die Anforderung eingetroffen ist. Lässt NULL-Werte zu.

blocking_session_id

smallint

ID der Sitzung, die die Anforderung blockiert. Wenn diese Spalte den Wert NULL aufweist, wird die Anforderung nicht blockiert, oder die Sitzungsinformationen der blockierenden Sitzung sind nicht verfügbar (bzw. können nicht identifiziert werden).

-2 = Der Besitzer der blockierenden Ressource ist eine verwaiste verteilte Transaktion.

-3 = Der Besitzer der blockierenden Ressource ist eine verzögerte Wiederherstellungstransaktion.

-4 = Die Sitzungs-ID des Besitzers des blockierenden Latches konnte zu diesem Zeitpunkt aufgrund von internen Latchstatusübergängen nicht bestimmt werden.

wait_type

nvarchar(60)

Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte den Wartetyp zurück. Lässt NULL-Werte zu.

Informationen zu Wartetypen finden Sie unter sys.dm_os_wait_stats (Transact-SQL).

wait_time

int

Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte die Dauer des aktuellen Wartevorgangs in Millisekunden an. Lässt keine NULL-Werte zu.

last_wait_type

nvarchar(60)

Wenn diese Anforderung zuvor bereits blockiert war, gibt diese Spalte den Typ des letzten Wartevorgangs zurück. Lässt keine NULL-Werte zu.

wait_resource

nvarchar(256)

Wenn die Anforderung zurzeit blockiert wird, gibt diese Spalte die Ressource zurück, auf die die Anforderung zurzeit wartet. Lässt keine NULL-Werte zu.

open_transaction_count

int

Anzahl der für die Anforderung offenen Transaktionen. Lässt keine NULL-Werte zu.

open_resultset_count

int

Anzahl der für die Anforderung offenen Resultsets. Lässt keine NULL-Werte zu.

transaction_id

bigint

ID der Transaktion, in der diese Anforderung ausgeführt wird. Lässt keine NULL-Werte zu.

context_info

varbinary(128)

CONTEXT_INFO-Wert der Sitzung. Lässt NULL-Werte zu.

percent_complete

real

Prozentsatz der für die folgenden Befehle durchgeführten Arbeit:

  • ALTER INDEX REORGANIZE

  • AUTO_SHRINK-Option mit ALTER DATABASE

  • BACKUP DATABASE

  • DBCC CHECKDB

  • DBCC CHECKFILEGROUP

  • DBCC CHECKTABLE

  • DBCC INDEXDEFRAG

  • DBCC SHRINKDATABASE

  • DBCC SHRINKFILE

  • RECOVERY

  • RESTORE DATABASE,

  • ROLLBACK

  • TDE ENCRYPTION

Lässt keine NULL-Werte zu.

estimated_completion_time

bigint

Nur intern. Lässt keine NULL-Werte zu.

cpu_time

int

Von der Anforderung beanspruchte CPU-Zeit (in Millisekunden). Lässt keine NULL-Werte zu.

total_elapsed_time

int

Gesamtzeit seit dem Eintreffen der Anforderung (in Millisekunden). Lässt keine NULL-Werte zu.

scheduler_id

int

ID des Zeitplanungsmoduls, das diese Anforderung plant. Lässt keine NULL-Werte zu.

task_address

varbinary(8)

Speicheradresse, die dem Task für diese Anforderung zugeordnet ist. Lässt NULL-Werte zu.

reads

bigint

Anzahl der von dieser Anforderung ausgeführten Lesevorgänge. Lässt keine NULL-Werte zu.

writes

bigint

Anzahl der von dieser Anforderung ausgeführten Schreibvorgänge. Lässt keine NULL-Werte zu.

logical_reads

bigint

Anzahl der von dieser Anforderung ausgeführten logischen Lesevorgänge. Lässt keine NULL-Werte zu.

text_size

int

TEXTSIZE-Einstellung für diese Anforderung. Lässt keine NULL-Werte zu.

language

nvarchar(128)

Spracheinstellung für die Anforderung. Lässt NULL-Werte zu.

date_format

nvarchar(3)

DATEFORMAT-Einstellung für die Anforderung. Lässt NULL-Werte zu.

date_first

smallint

DATEFIRST-Einstellung für die Anforderung. Lässt keine NULL-Werte zu.

quoted_identifier

bit

1 = QUOTED_IDENTIFIER ist ON für die Anforderung. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

arithabort

bit

1 = ARITHABORT ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

ansi_null_dflt_on

bit

1 = ANSI_NULL_DFLT_ON ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

ansi_defaults

bit

1 = ANSI_DEFAULTS ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

ansi_warnings

bit

1 = ANSI_WARNINGS ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

ansi_padding

bit

1 = ANSI_PADDING ist für die Anforderung auf ON festgelegt.

Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

ansi_nulls

bit

1 = ANSI_NULLS ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

concat_null_yields_null

bit

1 = CONCAT_NULL_YIELDS_NULL ist für die Anforderung auf ON festgelegt. Andernfalls ist der Wert 0.

Lässt keine NULL-Werte zu.

transaction_isolation_level

smallint

Isolationsstufe, mit der die Transaktion für diese Anforderung erstellt wird. Lässt keine NULL-Werte zu.

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Momentaufnahme

lock_timeout

int

Sperrtimeout für diese Anforderung (in Millisekunden). Lässt keine NULL-Werte zu.

deadlock_priority

int

DEADLOCK_PRIORITY-Einstellung für die Anforderung. Lässt keine NULL-Werte zu.

row_count

bigint

Anzahl von Zeilen, die von dieser Anforderung an den Client zurückgegeben wurden. Lässt keine NULL-Werte zu.

prev_error

int

Letzter Fehler, der während der Ausführung der Anforderung aufgetreten ist. Lässt keine NULL-Werte zu.

nest_level

int

Aktuelle Schachtelungsebene von Code, der für die Anforderung ausgeführt wird. Lässt keine NULL-Werte zu.

granted_query_memory

int

Anzahl von Seiten, die der Ausführung einer Abfrage in der Anforderung zugeordnet sind. Lässt keine NULL-Werte zu.

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 CLR heraus ausgeführt wird. Lässt keine NULL-Werte zu.

group_id

int

ID der Arbeitsauslastungsgruppe, zu der diese Abfrage gehört. Lässt keine NULL-Werte zu.

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 berechnet wird und zum Identifizieren ähnlicher Abfrageausführungspläne verwendet wird. Sie können diesen Hashwert verwenden, um die kumulierten Kosten für Abfragen mit ähnlichen Ausführungsplänen zu suchen.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

HinweisHinweis

Wenn der Benutzer die VIEW SERVER STATE-Berechtigung auf dem Server besitzt, kann er alle zurzeit ausgeführten Sitzungen für die Instanz von SQL Server anzeigen; andernfalls wird dem Benutzer nur die aktuelle Sitzung angezeigt.

Beispiele

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.Suchen aller Sperren, die ein ausgeführter Batch enthält

Im folgenden Beispiel werden sys.dm_exec_requests abgefragt, um den entsprechende Batch zu suchen und den transaction_id-Wert aus der Ausgabe zu kopieren.

SELECT * FROM sys.dm_exec_requests;
GO

Verwenden Sie dann zum Suchen von Sperrinformationen den kopierten transaction_id-Wert 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

C.Suchen aller zurzeit blockierten Anforderungen

Im folgenden Beispiel werden sys.dm_exec_requests abgefragt, 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

Siehe auch

Verweis

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)

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)