sys.dm_os_threads (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

SQL Server プロセスで実行されているすべての SQL Server オペレーティング システム スレッドの一覧を返します。

Note

これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_os_threadsという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

列名 データ型 説明
thread_address varbinary(8) スレッドのメモリ アドレス (主キー)。
started_by_sqlservr bit スレッド イニシエーターを示します。

1 = SQL Server がスレッドを開始しました。

0 = SQL Server 内から拡張ストアド プロシージャなど、別のコンポーネントがスレッドを開始しました。
os_thread_id int オペレーティング システムによって割り当てられているスレッドの ID。
status int 内部状態フラグ。
instruction_address varbinary(8) 現在実行されている命令のアドレス。
creation_time datetime このスレッドが作成された時刻。
kernel_time bigint このスレッドによって使用されるカーネル時間の量。
usermode_time bigint スレッドで使用されたユーザー時間。
stack_base_address varbinary(8) このスレッドの最も高いスタック アドレスのメモリ アドレス。
stack_end_address varbinary(8) スレッドにおける最下位のスタック アドレスのメモリ アドレス。
stack_bytes_committed int スタックでコミットされたバイト数。
stack_bytes_used int スレッドでアクティブに使用されているバイト数。
アフィニティ bigint このスレッドが実行されている CPU マスク。 これは、 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY ステートメントによって構成された値によって異なります。 ソフト アフィニティの場合は、スケジューラと異なることがあります。
優先度 int このスレッドの優先度値。
ロケール int スレッドのキャッシュされたロケール LCID。
Token varbinary(8) スレッドのキャッシュされた偽装トークン ハンドル。
is_impersonating int スレッドで Win32 権限借用が使用されているかどうかを示します。

1 = スレッドではプロセスの既定値と異なるセキュリティ資格情報が使用されています。 これは、スレッドがプロセスを作成したエンティティ以外のエンティティを偽装していることを示します。
is_waiting_on_loader_lock int スレッドでローダー ロックを待機中かどうかを示す、オペレーティング システムの状態。
fiber_data varbinary(8) スレッドで実行されている現在の Win32 ファイバー。 これは、SQL Server が軽量プーリング用に構成されている場合にのみ適用されます。
thread_handle varbinary(8) 内部のみで使用します。
event_handle varbinary(8) 内部のみで使用します。
scheduler_address varbinary(8) このスレッドに関連付けられているスケジューラのメモリ アドレス。 詳細については、「sys.dm_os_schedulers (Transact-SQL)」を参照してください。
worker_address varbinary(8) スレッドにバインドしているワーカーのメモリ アドレス。 詳細については、「 sys.dm_os_workers (Transact-SQL)」を参照してください。
fiber_context_address varbinary(8) 内部ファイバー コンテキスト アドレス。 これは、SQL Server が軽量プーリング用に構成されている場合にのみ適用されます。
self_address varbinary(8) 内部一貫性ポインター。
processor_group smallint 適用対象: SQL Server 2008 R2 (10.50.x) 以降。

プロセッサ グループ ID。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader## サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

SQL Server 2022 以降でのアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。

Linux バージョンに関する注意事項

Linux での SQL エンジンの動作により、この情報の一部が Linux 診断データと一致しません。 たとえば、 os_thread_id は、 pstop 、procfs (/proc/pid) などのツールの結果と一致しません。 これは、SQL Server コンポーネントとオペレーティング システムの間のレイヤーであるプラットフォーム抽象化レイヤー (SQLPAL) が原因です。

起動時に、SQL Server はスレッドを開始し、ワーカーをそれらのスレッドに関連付けます。 ただし、拡張ストアド プロシージャなどの外部コンポーネントは、SQL Server プロセスでスレッドを開始できます。 SQL Server は、これらのスレッドを制御しません。 sys.dm_os_threadsは、SQL Server プロセスでリソースを消費する不正なスレッドに関する情報を提供できます。

次のクエリは、SQL Server によって開始されていないスレッドを実行しているワーカーと実行に使用される時間を検索するために使用されます。

Note

次のクエリでは、簡略化のため * ステートメントでアスタリスク (SELECT) を使用していますが、 特にカタログ ビュー、動的管理ビュー、およびシステム テーブル値関数では、アスタリスク (*) を使用しないようにしてください。 Microsoft SQL Server の今後のアップグレードとリリースでは、列が追加され、列の順序がこれらのビューと関数に変更される可能性があります。 これらの変更により、特定の順序と列数を想定するアプリケーションが中断される可能性があります。

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

関連項目

sys.dm_os_workers (Transact-SQL)
SQL Server オペレーティングシステム関連の動的管理ビュー (Transact-sql)