sys.dm_os_threads(Transact-SQL)sys.dm_os_threads (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 예Azure Synapse Analytics(SQL DW) 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

SQL ServerSQL Server 프로세스에서 실행되고 있는 모든 SQL ServerSQL Server 운영 체제 스레드를 목록으로 반환합니다.Returns a list of all SQL ServerSQL Server Operating System threads that are running under the SQL ServerSQL Server process.

참고

Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW) 또는 병렬 데이터 웨어하우스Parallel Data Warehouse에서이를 호출 하려면 dm_pdw_nodes_os_threads이름을 사용 합니다.To call this from Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW) or 병렬 데이터 웨어하우스Parallel Data Warehouse, use the name sys.dm_pdw_nodes_os_threads.

열 이름Column name 데이터 형식Data type 설명Description
thread_addressthread_address varbinary(8)varbinary(8) 스레드의 메모리 주소(기본 키)입니다.Memory address (Primary Key) of the thread.
started_by_sqlservrstarted_by_sqlservr bitbit 스레드 시작자를 나타냅니다.Indicates the thread initiator.

1 = SQL ServerSQL Server에서 스레드를 시작했습니다.1 = SQL ServerSQL Server started the thread.

0 = SQL ServerSQL Server 내의 확장 저장 프로시저와 같은 다른 구성 요소에서 스레드를 시작했습니다.0 = Another component started the thread, such as an extended stored procedure from within SQL ServerSQL Server.
os_thread_idos_thread_id intint 운영 체제가 할당한 스레드의 ID입니다.ID of the thread that is assigned by the operating system.
statusstatus intint 내부 상태 플래그입니다.Internal status flag.
instruction_addressinstruction_address varbinary(8)varbinary(8) 현재 실행 중인 명령의 주소입니다.Address of the instruction that is currently being executed.
creation_timecreation_time datetimedatetime 이 스레드가 생성된 시간입니다.Time when this thread was created.
kernel_timekernel_time bigintbigint 이 스레드가 사용하는 커널 시간입니다.Amount of kernel time that is used by this thread.
usermode_timeusermode_time bigintbigint 이 스레드가 사용하는 사용자 시간입니다.Amount of user time that is used by this thread.
stack_base_addressstack_base_address varbinary(8)varbinary(8) 이 스레드에 대한 최상위 스택 주소의 메모리 주소입니다.Memory address of the highest stack address for this thread.
stack_end_addressstack_end_address varbinary(8)varbinary(8) 이 스레드에 대한 최하위 스택 주소의 메모리 주소입니다.Memory address of the lowest stack address of this thread.
stack_bytes_committedstack_bytes_committed intint 스택에서 커밋된 바이트 수입니다.Number of bytes that are committed in the stack.
stack_bytes_usedstack_bytes_used intint 스레드에서 사용하고 있는 바이트 수입니다.Number of bytes that are actively being used on the thread.
affinityaffinity bigintbigint 이 스레드가 실행되고 있는 CPU 마스크입니다.CPU mask on which this thread is running. ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 문에 의해 구성 된 값에 따라 달라 집니다.This depends on the value configured by the ALTER SERVER CONFIGURATION SET PROCESS AFFINITY statement. 소프트 선호도의 경우 스케줄러와 다를 수 있습니다.Might be different from the scheduler in case of soft-affinity.
우선 순위Priority intint 이 스레드의 우선 순위 값입니다.Priority value of this thread.
로캘Locale intint 스레드의 캐시된 로캘 LCID입니다.Cached locale LCID for the thread.
토큰Token varbinary(8)varbinary(8) 스레드의 캐시된 가장 토큰 핸들입니다.Cached impersonation token handle for the thread.
is_impersonatingis_impersonating intint 이 스레드의 Win32 가장 사용 여부를 나타냅니다.Indicates whether this thread is using Win32 impersonation.

1 = 스레드에서 프로세스의 기본값과 다른 보안 자격 증명을 사용하고 있습니다.1 = The thread is using security credentials that are different from the default of the process. 이것은 스레드가 프로세스를 만든 엔터티와 다른 엔터티를 가장하고 있다는 것을 나타냅니다.This indicates that the thread is impersonating an entity other than the one that created the process.
is_waiting_on_loader_lockis_waiting_on_loader_lock intint 스레드가 로더 잠금을 기다리는 중인지 여부를 나타내는 운영 체제 상태입니다.Operating system status of whether the thread is waiting on the loader lock.
fiber_datafiber_data varbinary(8)varbinary(8) 스레드에서 실행 중인 현재의 Win32 파이버입니다.Current Win32 fiber that is running on the thread. SQL ServerSQL Server에 경량 풀링이 구성된 경우에만 적용됩니다.This is only applicable when SQL ServerSQL Server is configured for lightweight pooling.
thread_handlethread_handle varbinary(8)varbinary(8) 내부적으로만 사용됩니다.Internal use only.
event_handleevent_handle varbinary(8)varbinary(8) 내부적으로만 사용됩니다.Internal use only.
scheduler_addressscheduler_address varbinary(8)varbinary(8) 이 스레드와 연관된 스케줄러의 메모리 주소입니다.Memory address of the scheduler that is associated with this thread. 자세한 내용은 dm_os_schedulers (transact-sql)을 참조 하세요.For more information, see sys.dm_os_schedulers (Transact-SQL).
worker_addressworker_address varbinary(8)varbinary(8) 이 스레드에 바인딩된 작업자의 메모리 주소입니다.Memory address of the worker that is bound to this thread. 자세한 내용은 dm_os_workers (transact-sql)을 참조 하세요.For more information, see sys.dm_os_workers (Transact-SQL).
fiber_context_addressfiber_context_address varbinary(8)varbinary(8) 내부 파이버 컨텍스트 주소입니다.Internal fiber context address. SQL ServerSQL Server에 경량 풀링이 구성된 경우에만 적용됩니다.This is only applicable when SQL ServerSQL Server is configured for lightweight pooling.
self_addressself_address varbinary(8)varbinary(8) 내부 일관성 포인터입니다.Internal consistency pointer.
processor_groupprocessor_group smallintsmallint 적용 대상: SQL Server 2008 R2SQL Server 2008 R2 이상Applies to: SQL Server 2008 R2SQL Server 2008 R2 and later.

프로세서 그룹 ID입니다.Processor group ID.
pdw_node_idpdw_node_id intint 적용 대상: Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW), 병렬 데이터 웨어하우스Parallel Data WarehouseApplies to: Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW), 병렬 데이터 웨어하우스Parallel Data Warehouse

이 배포가 설정 된 노드의 식별자입니다.The identifier for the node that this distribution is on.

사용 권한Permissions

SQL ServerSQL Server에서 VIEW SERVER STATE 권한이 필요 합니다.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
SQL DatabaseSQL Database 프리미엄 계층에는 데이터베이스에 대 한 VIEW DATABASE STATE 권한이 필요 합니다.On SQL DatabaseSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. SQL DatabaseSQL Database Standard 및 Basic 계층에서는 서버 관리자 또는 Azure Active Directory 관리자 계정이 필요 합니다.On SQL DatabaseSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

Linux 버전에 대 한 참고 사항Notes on Linux version

Linux에서 SQL 엔진의 작동 방식으로 인해이 정보 중 일부는 Linux 진단 데이터와 일치 하지 않습니다.Due to how the SQL engine works in Linux, some of this information doesn't match Linux diagnostics data. 예를 들어 os_thread_id ps,top 또는 procfs (/proc/pid)와 같은 도구의 결과와 일치 하지 않습니다.For example, os_thread_id does not match the result of tools like ps,top or the procfs (/proc/pid). 이는 SQL Server 구성 요소와 운영 체제 간의 레이어인 SQLPAL (Platform 추상화 계층) 때문입니다.This is due the Platform Abstraction Layer (SQLPAL), a layer between SQL Server components and the operating system.

Examples

시작 시 SQL ServerSQL Server에서 스레드를 시작한 다음 작업자를 해당 스레드에 연결합니다.Upon startup, SQL ServerSQL Server starts threads and then associates workers with those threads. 그러나 확장 저장 프로시저와 같은 외부 구성 요소가 SQL ServerSQL Server 프로세스에서 스레드를 시작할 수 있습니다.However, external components, such as an extended stored procedure, can start threads under the SQL ServerSQL Server process. SQL ServerSQL Server는 이러한 스레드를 제어하지 않습니다.has no control of these threads. dm_os_threads은 SQL ServerSQL Server 프로세스에서 리소스를 사용 하는 rogue 스레드에 대 한 정보를 제공할 수 있습니다.sys.dm_os_threads can provide information about rogue threads that consume resources in the SQL ServerSQL Server process.

다음 쿼리는 SQL ServerSQL Server에서 시작하지 않은 스레드를 실행하는 작업자와 실행 소요 시간을 확인하는 데 사용됩니다.The following query is used to find workers, along with time used for execution, that are running threads not started by SQL ServerSQL Server.

참고

간단하게 다음 쿼리에서는 * 문에 별표(SELECT)를 사용합니다.For conciseness, the following query uses an asterisk (*) in the SELECT statement. 특히 카탈로그 뷰, 동적 관리 뷰 및 시스템 테이블 반환 함수에 대해서는 별표(*)를 사용하지 않아야 합니다.You should avoid using the asterisk (*), especially against catalog views, dynamic management views, and system table-valued functions. MicrosoftMicrosoftSQL ServerSQL Server의 이후 업그레이드 및 릴리스에서는 열을 추가 하 고 이러한 뷰 및 함수에 열 순서를 변경할 수 있습니다.Future upgrades and releases of MicrosoftMicrosoftSQL ServerSQL Server may add columns and change the order of columns to these views and functions. 그렇게 되면 특정 열 순서 및 열 수를 예상하는 애플리케이션에서 오류가 발생할 수 있습니다.These changes might break applications that expect a particular order and number of columns.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

참고 항목See Also

dm_os_workers (transact-sql) sys.dm_os_workers (Transact-SQL)
운영 체제 관련 동적 관리 뷰 (transact-sql SQL Server)SQL Server Operating System Related Dynamic Management Views (Transact-SQL)