適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric SQL Database
SQL Server プロセスで実行されているすべての SQL Server オペレーティング システム スレッドの一覧を返します。
Note
Azure Synapse Analyticsから呼ぶには、sys.dm_pdw_nodes_os_threadsという名前を使います。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
| 列名 | データの種類 | Description |
|---|---|---|
| thread_address | varbinary(8) | スレッドのメモリ アドレス (主キー)。 |
| started_by_sqlservr | bit | スレッド イニシエーターを示します。 1 = SQL Server がスレッドを開始しました。 0 = SQL Server 内から拡張ストアド プロシージャなど、別のコンポーネントがスレッドを開始しました。 |
| os_thread_id | int | オペレーティング システムによって割り当てられているスレッドの ID。 |
| 状態 | 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 CONFIGURATIONSET PROCESS AFFINITY 文で設定された値に依存します。 ソフト アフィニティの場合は、スケジューラと異なることがあります。 |
| Priority | int | このスレッドの優先度値。 |
| ロケール | int | スレッドのキャッシュされたロケール LCID。 |
| トークン | 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)」を参照してください。 |
| 労働者の住所 | 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 このディストリビューションがオンになっているノードの識別子。 |
Permissions
SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。
SQL Database の Basic、S0、S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバー VIEW PERFORMANCE STATE権限が必要です。
Linux バージョンに関する注意事項
Linux での SQL エンジンの動作により、この情報の一部が Linux 診断データと一致しません。 たとえば、 os_thread_id は、 ps、top 、procfs (/proc/pid) などのツールの結果と一致しません。 これは、SQL Server コンポーネントとオペレーティング システムの間のレイヤーであるプラットフォーム抽象化レイヤー (SQLPAL) が原因です。
Examples
起動時に、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;