sys.dm_os_threads (Transact-SQL)

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

列名

データ型

説明

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

スレッドでアクティブに使用されているバイト数。

affinity

bigint

このスレッドが実行されている CPU マスク。ALTER SERVER CONFIGURATION SET PROCESS AFFINITY ステートメントで構成される値によって異なります。ソフトアフィニティの場合のスケジューラとは異なる場合があります。

Priority

int

スレッドの優先度値。

Locale

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

プロセッサ グループ ID が格納されます。

権限

サーバーに対する VIEW SERVER STATE 権限が必要です。

SQL Server では、起動時にスレッドが開始され、これらのスレッドとワーカーが関連付けられますが、拡張ストアド プロシージャなどの外部コンポーネントでは、SQL Server プロセスでスレッドを開始できます。SQL Server ではこれらのスレッドを制御できません。sys.dm_os_threads で、SQL Server プロセスのリソースを消費する、問題のあるスレッドに関する情報を確認できます。

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

注意

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

SELECT *
  FROM sys.dm_os_threads
  WHERE started_by_sqlservr = 0;