Freigeben über


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 die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos 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;  

Siehe auch

sys.dm_os_workers (Transact-SQL)
Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)