sys.dm_exec_requests

Aktualisiert: 12. Dezember 2006

Gibt eine Zeile für jede in SQL Server ausgeführte Anforderung zurück. Die dynamischen Verwaltungssichten sys.dm_exec_connections, sys.dm_exec_sessions und sys.dm_exec_requests mit Serverbereich werden der sys.sysprocesses-Systemsicht (früher Systemtabelle) zugeordnet.

ms177648.note(de-de,SQL.90).gifHinweis:
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. NULL ist nicht zulässig.

request_id

int

ID der Anforderung. Ist im Kontext der Sitzung eindeutig. NULL ist nicht zulässig.

start_time

datetime

Uhrzeit, zu der die Ausführung der Anforderung geplant ist. NULL ist nicht zulässig.

status

nvarchar(60)

Status der Anforderung. Folgende Werte sind möglich:

  • Hintergrund. Die Anforderung wird als Hintergrundthread ausgeführt, wie auch der Ressourcenmonitor oder die Deadlocküberwachung.
  • Wird ausgeführt. Die Anforderung wird ausgeführt.
  • Ausführbar. Die Anforderung wird ausgeführt und ist vorübergehend ausgeplant, da beinahe kein Quorum mehr vorhanden ist.
  • Ruhezustand. Es ist kein Eingreifen erforderlich.
  • Ausstehend. Die Anforderung wartet darauf, von einem Arbeitsthread abgerufen zu werden.
  • Unterbrochen Die Anforderung wartet auf ein Ereignis.

NULL ist nicht zulässig.

command

nvarchar(32)

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

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • BACKUP LOG
  • BACKUP DB
  • DBCC
  • WAITFOR

Der Text der Anforderung kann mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text und dem entsprechenden sql_handle-Wert 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

NULL ist nicht zulässig.

sql_handle

varbinary(64)

Das Handle für die SQL-Anweisung der Anforderung. Dieses Handle kann zum Abrufen des eigentlichen Anweisungstextes von der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text verwendet werden. NULL ist nicht zulässig.

statement_start_offset

int

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

statement_end_offset

int

Endzeichenposition der derzeit ausgeführten Anweisung im derzeit ausgeführten Batch oder in der derzeit ausgeführten gespeicherten Prozedur. Kann zusammen mit statement_start_offset, der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text und sql_handle zum Abrufen der derzeit ausgeführten Anweisung für die Anforderung verwendet werden. Lässt NULL-Werte zu.

plan_handle

varbinary(64)

Das Handle für den Abfrageplan der Anforderung. Wenn Sie den Abfrageplan anzeigen möchten, verwenden Sie es zusammen mit der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan. Wenn Sie den Plancache abfragen möchten, verwenden die dynamische Verwaltungsfunktion sys.dm_exec_cached_plans. Wenn Sie die Planattribute anzeigen möchten, verwenden Sie die Funktion sys.dm_exec_plan_attributes. Lässt NULL-Werte zu.

database_id

smallint

ID der Datenbank, unter der die Anforderung ausgeführt wird. Weitere Informationen zu Datenbanken finden Sie, indem Sie die Katalogsicht sys.databases abfragen. Wenn Sie den Datenbanknamen abrufen möchten, verwenden Sie die systeminterne Funktion db_name(). NULL ist nicht zulässig.

user_id

int

Benutzer-ID, unter der die Anforderung ausgeführt wird. Weitere Benutzerinformationen finden Sie, indem Sie die Katalogsicht sys.database_principals abfragen. NULL ist nicht zulässig.

connection_id

uniqueidentifier

ID der Verbindung, über die die Anforderung eingetroffen ist. Weitere Informationen zur physikalischen oder logischen Verbindung finden Sie, indem Sie die dynamische Verwaltungssicht sys.dm_exec_connections abfragen. Lässt NULL-Werte zu.

blocking_session_id

smallint

ID der Sitzung, die die Anforderung blockiert. Wenn diese Spalte 0 ist, wird die Anforderung nicht blockiert, oder die Informationen für die blockierende Sitzung sind nicht verfügbar oder 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 aufgrund von internen Latchstatusübergängen nicht bestimmt werden.

wait_type

nvarchar(60)

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

wait_time

int

Wenn die Anforderung blockiert wird, gibt diese Spalte die Dauer des aktuellen Wartevorgangs in Millisekunden an. NULL ist nicht zulässig.

last_wait_type

nvarchar(64)

Wenn diese Anforderung zuvor bereits blockiert war, gibt diese Spalte den Typ des letzten Wartevorgangs zurück. NULL ist nicht zulässig.

wait_resource

nvarchar(512)

Wenn die Anforderung blockiert wird, gibt diese Spalte die Ressource zurück, auf die die Anforderung wartet. NULL ist nicht zulässig.

open_transaction_count

int

Anzahl der für die Anforderung offenen Transaktionen. NULL ist nicht zulässig.

open_resultset_count

int

Anzahl der für die Anforderung offenen Resultsets. NULL ist nicht zulässig.

transaction_id

bigint

ID der Transaktion, in der diese Anforderung ausgeführt wird. Diese ID ist für eine Instanz von SQL Server eindeutig. Verwenden Sie diese zum Abfragen der dynamischen Verwaltungssichten sys.dm_tran_active_transactions, sys.dm_tran_locks oder sys.dm_tran_database_transactions. NULL ist nicht zulässig.

context_info

varbinary(128)

Wert aus der SET CONTEXT_INFO-Anweisung für die Anforderung. Lässt NULL-Werte zu.

percent_complete

real

Prozentsatz der für bestimmte Vorgänge, einschließlich Rollbacks, abgeschlossenen Arbeit.

ms177648.note(de-de,SQL.90).gifHinweis:

Fortschrittsdaten für Abfragen können so jedoch nicht bereitgestellt werden.

NULL ist nicht zulässig.

estimated_completion_time

bigint

Nur intern. NULL ist nicht zulässig.

cpu_time

int

Von der Anforderung beanspruchte CPU-Zeit (in Millisekunden). NULL ist nicht zulässig.

total_elapsed_time

int

Gesamtzeit seit dem Eintreffen der Anforderung (in Millisekunden). NULL ist nicht zulässig.

scheduler_id

int

ID des Zeitplanungsmoduls, das diese Anforderung plant. Weitere Informationen zu diesem Zeitplanungsmodul finden Sie, indem Sie die dynamische Verwaltungssicht sys.dm_os_schedulers abfragen. NULL ist nicht zulässig.

task_address

varbinary(8)

Speicheradresse, die dem Task für diese Anforderung zugeordnet ist. Weitere Informationen zu diesem Task finden Sie, indem Sie die dynamische Verwaltungssicht sys.dm_os_tasks abfragen. Lässt NULL-Werte zu.

reads

bigint

Anzahl der von dieser Anforderung ausgeführten Lesevorgänge. NULL ist nicht zulässig.

writes

bigint

Anzahl der von dieser Anforderung ausgeführten Schreibvorgänge. NULL ist nicht zulässig.

logical_reads

bigint

Anzahl der von dieser Anforderung ausgeführten logischen Lesevorgänge. NULL ist nicht zulässig.

text_size

int

TEXTSIZE-Einstellung für diese Anforderung. NULL ist nicht zulässig.

language

nvarchar(256)

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. NULL ist nicht zulässig.

quoted_identifier

bit

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

NULL ist nicht zulässig.

arithabort

bit

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

NULL ist nicht zulässig.

ansi_null_dflt_on

bit

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

NULL ist nicht zulässig.

ansi_defaults

bit

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

NULL ist nicht zulässig.

ansi_warnings

bit

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

NULL ist nicht zulässig.

ansi_padding

bit

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

Andernfalls ist der Wert 0.

NULL ist nicht zulässig.

ansi_nulls

bit

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

NULL ist nicht zulässig.

concat_null_yields_null

bit

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

NULL ist nicht zulässig.

transaction_isolation_level

smallint

Isolationsgrad für Transaktionen dieser Anforderung. Folgende Werte sind möglich:

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Snapshot

NULL ist nicht zulässig.

lock_timeout

int

Sperrtimeout für diese Anforderung (in Millisekunden). NULL ist nicht zulässig.

deadlock_priority

int

DEADLOCK_PRIORITY-Einstellung für die Anforderung. NULL ist nicht zulässig.

row_count

bigint

Anzahl von Zeilen, die von dieser Anforderung an den Client zurückgegeben wurden. NULL ist nicht zulässig.

prev_error

int

Letzter Fehler, der während der Ausführung der Anforderung aufgetreten ist. NULL ist nicht zulässig.

nest_level

int

Schachtelungsebene von Code, der für die Anforderung ausgeführt wird. NULL ist nicht zulässig.

granted_query_memory

int

Anzahl von Seiten, die der Ausführung einer Abfrage in der Anforderung zugeordnet sind. NULL ist nicht zulässig.

executing_managed_code

bit

Gibt an, ob diese 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. NULL ist nicht zulässig.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

ms177648.note(de-de,SQL.90).gifHinweis:
Wenn der Benutzer über die Berechtigung VIEW SERVER STATE für den Server verfügt, kann dieser Benutzer alle derzeit ausgeführten Sitzungen für die Instanz von SQL Server anzeigen. Andernfalls wird nur die Sitzung angezeigt, in der sys.dm_exec_requests ausgeführt wird.

Kardinalität der Beziehungen

Von In Für/Anwendung Beziehung

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

1:

0 oder viele

sys.dm_exec_requests

sys.dm_exec_sql_text(sql_handle)

CROSS APPLY

OUTER APPLY

0 oder 1:

0 oder 1

sys.dm_exec_requests

sys.dm_exec_query_plan(plan_handle)

CROSS APPLY

OUTER APPLY

0 oder 1:

0 oder 1

sys.dm_exec_requests

sys.dm_exec_cached_plans

plan_handle

0 oder 1:

0 oder 1

sys.dm_exec_requests

sys.dm_exec_plan_attributes(plan_handle)

CROSS APPLY

OUTER APPLY

0 oder 1:

0 oder 1

sys.dm_exec_requests

sys.databases

database_id

1:1

sys.dm_exec_requests

sys.database_principals

user_id = principal_id

1:1

sys.dm_exec_connections

sys.dm_exec_requests

connection_id

1:

0 oder 1

sys.dm_exec_requests

sys.dm_tran_active_transactions

transaction_id

1:1

Beispiele

A. Suchen des Abfragetextes für einen derzeit ausgeführten Batch

Im folgenden Beispiel wird sys.dm_exec_requests abgefragt, um die betreffende Abfrage zu suchen und deren sql_handle aus der Ausgabe zu kopieren.

SELECT * FROM sys.dm_exec_requests;
GO

Verwenden Sie zum Abrufen des Anweisungstextes das kopierte sql_handle 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 für einen derzeit ausgeführten Batch aufrechterhalten werden

Im folgenden Beispiel wird sys.dm_exec_requests abgefragt, um den betreffenden Batch zu suchen und dessen transaction_id aus der Ausgabe zu kopieren.

SELECT * 
FROM sys.dm_exec_requests
GO

Verwenden Sie zum Abrufen der Sperreninformationen 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

C. Suchen aller derzeit blockierten Anforderungen

Im folgenden Beispiel wird 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

Zuordnen von SQL Server 2000-Systemtabellen zu SQL Server 2005-Katalogsichten
Dynamische Verwaltungssichten und -funktionen
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit der Ausführung
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Zuordnung von SQL Server 2000 zu SQL Server 2005 wurde hinzugefügt.
  • Beispiele wurden hinzugefügt.
  • Die Tabelle "Kardinalität der Beziehungen" wurde hinzugefügt.
Geänderter Inhalt:
  • Die Beschreibungen von start_time, status, sql_handle, plan_handle, database_id, user_id, connection_id, transaction_id, context_info, scheduler_id, task_address, language, date_format, transaction_isolation_level, date_first, executing_managed_code wurden geändert.

05. Dezember 2005

Neuer Inhalt:
  • Der Hinweis zur im präemptiven Modus verbrachten Zeit wurde hinzugefügt.
Geänderter Inhalt:
  • Der Datentyp von wait_type wurde korrigiert.