sys.dm_os_threads (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt eine Liste aller SQL Server-Betriebssystemthreads zurück, die unter dem SQL Server-Prozess ausgeführt werden.
Hinweis
Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_os_threads. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
thread_address | varbinary(8) | Speicheradresse (Primärschlüssel) des Threads. |
started_by_sqlservr | bit | Gibt den Threadinitiator an. 1 = SQL Server hat den Thread gestartet. 0 = Eine weitere Komponente hat den Thread gestartet, z. B. eine erweiterte gespeicherte Prozedur aus SQL Server. |
os_thread_id | int | ID des vom Betriebssystem zugewiesenen Threads. |
status | int | Internes Statusflag. |
instruction_address | varbinary(8) | Adresse der zurzeit ausgeführten Anweisung. |
creation_time | datetime | Zeit, zu der dieser Thread erstellt wurde. |
kernel_time | bigint | Menge der von diesem Thread verwendeten Kernelzeit. |
usermode_time | bigint | Menge der von diesem Thread verwendeten Benutzerzeit. |
stack_base_address | varbinary(8) | Speicheradresse der höchsten Stapeladresse für diesen Thread. |
stack_end_address | varbinary(8) | Speicheradresse der niedrigsten Stapeladresse für diesen Thread. |
stack_bytes_committed | int | Anzahl von Bytes, für die im Stapel ein Commit ausgeführt wurde. |
stack_bytes_used | int | Anzahl von Bytes, die aktiv im Thread verwendet werden. |
affinity | bigint | CPU-Maske, in der dieser Thread ausgeführt wird. Dies hängt vom Wert ab, der von der ALTER SERVER CONFIGURATION SET PROCESS AFFINITY-Anweisung konfiguriert wird. Kann sich bei weicher Affinität vom Zeitplanungsmodul unterscheiden. |
Priorität | int | Prioritätswert dieses Threads. |
Gebietsschema | int | Zwischengespeicherter Gebietsschemabezeichner (LCID) für den Thread. |
Token | varbinary(8) | Zwischengespeichertes Identitätswechsel-Tokenhandle für den Thread. |
is_impersonating | int | Gibt an, ob dieser Thread den Win32-Identitätswechsel verwendet. 1 = Der Thread verwendet Sicherheitsanmeldeinformationen, die von der Standardeinstellung des Prozesses abweichen. Dieser Wert gibt an, dass der Thread die Identität einer Entität annimmt, die nicht mit der Entität übereinstimmt, die den Prozess erstellt hat. |
is_waiting_on_loader_lock | int | Betriebssystemstatus, der angibt, ob der Thread in der Loadersperre wartet. |
fiber_data | varbinary(8) | Aktuelle Win32-Fiber, die im Thread ausgeführt wird. Dies gilt nur, wenn SQL Server für die einfache Poolerstellung konfiguriert ist. |
thread_handle | varbinary(8) | Nur zur internen Verwendung. |
event_handle | varbinary(8) | Nur zur internen Verwendung. |
scheduler_address | varbinary(8) | Speicheradresse des Zeitplanungsmoduls, das diesem Thread zugeordnet ist. Weitere Informationen finden Sie unter sys.dm_os_schedulers (Transact-SQL). |
worker_address | varbinary(8) | Speicheradresse des Arbeitsthreads, der an diesen Thread gebunden ist. Weitere Informationen finden Sie unter sys.dm_os_workers (Transact-SQL). |
fiber_context_address | varbinary(8) | Interne Fiberkontextadresse. Dies gilt nur, wenn SQL Server für die einfache Poolerstellung konfiguriert ist. |
self_address | varbinary(8) | Interner Konsistenzzeiger. |
processor_group | smallint | Gilt für: SQL Server 2008 R2 (10.50.x) und höher. Prozessorgruppen-ID. |
pdw_node_id | int | Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. |
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto oder die Mitgliedschaft in der ##MS_ServerStateReader##
Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE
-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##
-Serverrolle erforderlich.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Hinweise zur Linux-Version
Aufgrund der Funktionsweise des SQL-Moduls in Linux stimmen einige dieser Informationen nicht mit den Linux-Diagnosedaten überein. Entspricht z. B os_thread_id
. nicht dem Ergebnis von Tools wie ps
,top
oder den Procfs (/proc/pid
). Dies ist auf die Platform Abstraction Layer (SQLPAL), eine Ebene zwischen SQL Server-Komponenten und dem Betriebssystem zurückzuführen.
Beispiele
Beim Start startet SQL Server Threads und ordnet dann Mitarbeitern diese Threads zu. Externe Komponenten, z. B. eine erweiterte gespeicherte Prozedur, können jedoch Threads unter dem SQL Server-Prozess starten. SQL Server hat keine Kontrolle über diese Threads. sys.dm_os_threads können Informationen zu nicht autorisierten Threads bereitstellen, die Ressourcen im SQL Server-Prozess nutzen.
Die folgende Abfrage wird verwendet, um Worker zusammen mit der für die Ausführung verwendeten Zeit zu finden, die Threads ausführen, die nicht von SQL Server gestartet werden.
Hinweis
Aus Gründen der Kürze wird in der folgenden Abfrage ein Sternchen (*
) in der SELECT
-Anweisung verwendet. Vermeiden Sie die Verwendung des Sternchens (*) insbesondere für Katalogsichten, dynamische Verwaltungssichten und Systemfunktionen mit Tabellenrückgabe. Zukünftige Upgrades und Versionen von Microsoft SQL Server können Spalten hinzufügen und die Reihenfolge der Spalten zu diesen Ansichten und Funktionen ändern. Diese Änderungen könnten zur Funktionsunfähigkeit von Anwendungen führen, die eine bestimmte Reihenfolge und Anzahl von Spalten erwarten.
SELECT *
FROM sys.dm_os_threads
WHERE started_by_sqlservr = 0;
Weitere Informationen
sys.dm_os_workers (Transact-SQL)
Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)