sp_who(Transact-SQL)sp_who (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

현재 사용자, 세션 및 인스턴스의 프로세스에 대 한 정보를 제공 된 MicrosoftMicrosoft SQL Server 데이터베이스 엔진SQL Server Database Engine합니다.Provides information about current users, sessions, and processes in an instance of the MicrosoftMicrosoft SQL Server 데이터베이스 엔진SQL Server Database Engine. 유휴 상태가 아닌 프로세스, 특정 사용자에게 속한 프로세스 또는 특정 세션에 속하는 프로세스만 반환하도록 이 정보를 필터링할 수 있습니다.The information can be filtered to return only those processes that are not idle, that belong to a specific user, or that belong to a specific session.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]  

인수Arguments

[ @loginame = ] '로그인' | 세션 ID | 'ACTIVE'[ @loginame = ] 'login' | session ID | 'ACTIVE'
결과 세트를 필터링하는 데 사용됩니다.Is used to filter the result set.

로그인sysname 특정 로그인에 속하는 프로세스로 하 게 식별 합니다.login is sysname that identifies processes belonging to a particular login.

세션 ID 에 속하는 세션 id 번호는 SQL ServerSQL Server 인스턴스.session ID is a session identification number belonging to the SQL ServerSQL Server instance. 세션 IDsmallint합니다.session ID is smallint.

활성 사용자 로부터 다음 명령에 대 한 대기 중인 세션을 제외 합니다.ACTIVE excludes sessions that are waiting for the next command from the user.

값을 지정하지 않으면 인스턴스에 속하는 모든 세션이 보고됩니다.If no value is provided, the procedure reports all sessions belonging to the instance.

반환 코드 값Return Code Values

0(성공) 또는 1(실패)0 (success) or 1 (failure)

결과 집합Result Sets

sp_who 결과 다음과 같은 정보 집합을 반환 합니다.sp_who returns a result set with the following information.

Column 데이터 형식Data type DescriptionDescription
spidspid smallintsmallint 세션 ID입니다.Session ID.
ecidecid smallintsmallint 특정 세션 ID와 연결된 지정된 스레드의 실행 컨텍스트 ID입니다.Execution context ID of a given thread associated with a specific session ID.

ECID = {0, 1, 2, 3,... n} 이며 여기서 0은 항상 주 또는 부모 스레드 및 {1, 2, 3,... n}는 의미입니다.ECID = {0, 1, 2, 3, ...n}, where 0 always represents the main or parent thread, and {1, 2, 3, ...n} represent the subthreads.
상태status nchar(30)nchar(30) 프로세스 상태입니다.Process status. 가능한 값은 아래와 같습니다.The possible values are:

유휴합니다.dormant. SQL ServerSQL Server에서 세션을 다시 설정하고 있습니다. is resetting the session.

실행합니다.running. 세션에서 일괄 처리를 하나 이상 실행하고 있습니다.The session is running one or more batches. MARS(Multiple Active Result Sets)를 설정하면 세션에서 여러 개의 일괄 처리를 실행할 수 있습니다.When Multiple Active Result Sets (MARS) is enabled, a session can run multiple batches. 자세한 내용은 참조 Multiple Active Result Sets를 사용 하 여 & #40; MARS & #41; .For more information, see Using Multiple Active Result Sets (MARS).

배경합니다.background. 세션에서 교착 상태 감지와 같은 백그라운드 태스크를 실행하고 있습니다.The session is running a background task, such as deadlock detection.

롤백합니다.rollback. 세션에서 트랜잭션 롤백을 진행하고 있습니다.The session has a transaction rollback in process.

보류 중인합니다.pending. 세션이 작업자 스레드를 사용할 수 있을 때까지 기다리고 있습니다.The session is waiting for a worker thread to become available.

실행 가능한합니다.runnable. 세션의 태스크는 시간 퀀텀을 얻기 위해 기다리는 동안 스케줄러의 실행 가능한 큐에 있습니다.The session's task is in the runnable queue of a scheduler while waiting to get a time quantum.

spinloop합니다.spinloop. 세션의 태스크가 spinlock을 사용할 수 있을 때까지 기다리고 있습니다.The session's task is waiting for a spinlock to become free.

일시 중단합니다.suspended. 세션이 I/O와 같은 이벤트가 완료되기를 기다리고 있습니다.The session is waiting for an event, such as I/O, to complete.
loginameloginame nchar(128)nchar(128) 특정 프로세스와 연결된 로그인 이름입니다.Login name associated with the particular process.
호스트 이름hostname nchar(128)nchar(128) 각 프로세스의 호스트 또는 컴퓨터 이름입니다.Host or computer name for each process.
blkblk char (5)char(5) 프로세스를 차단하기 위한 세션 ID입니다(존재하는 경우).Session ID for the blocking process, if one exists. 없는 경우 이 열은 0이 됩니다.Otherwise, this column is zero.

분리된 분산 트랜잭션이 지정된 세션 ID와 연결된 트랜잭션을 차단하는 경우 이 열은 분리된 트랜잭션을 차단하기 위한 값으로 '-2'를 반환합니다.When a transaction associated with a specified session ID is blocked by an orphaned distributed transaction, this column will return a '-2' for the blocking orphaned transaction.
dbnamedbname nchar(128)nchar(128) 프로세스가 사용하는 데이터베이스입니다.Database used by the process.
Cmdcmd nchar(16)nchar(16) 프로세스에 대해 실행 중인 데이터베이스 엔진Database Engine 명령( Transact-SQLTransact-SQL 문, 내부 데이터베이스 엔진Database Engine 프로세스 등)입니다. 데이터베이스 엔진Database Engine command ( Transact-SQLTransact-SQL statement, internal 데이터베이스 엔진Database Engine process, and so on) executing for the process.
request_idrequest_id intint 특정 세션에서 실행 중인 요청에 대한 ID입니다.ID for requests running in a specific session.

병렬 처리의 경우 특정 세션 ID에 대해 하위 스레드가 생성됩니다.In case of parallel processing, subthreads are created for the specific session ID. 주 스레드는 spid = <xxx>ecid =0으로 표시됩니다.The main thread is indicated as spid = <xxx> and ecid =0. 다른 하위 스레드의 같으면 spid = <xxx>, 하면서도 ecid > 0입니다.The other subthreads have the same spid = <xxx>, but with ecid > 0.

주의Remarks

차단 프로세스(배타 잠금이 설정된 경우도 있음)는 다른 프로세스에 필요한 리소스를 보유하고 있는 프로세스입니다.A blocking process, which may have an exclusive lock, is one that is holding resources that another process needs.

모든 분리된 분산 트랜잭션에는 세션 ID 값 '-2'가 할당됩니다.All orphaned distributed transactions are assigned the session ID value of '-2'. 분리된 분산 트랜잭션은 어떤 세션 ID와도 연결되지 않은 분산 트랜잭션입니다.Orphaned distributed transactions are distributed transactions that are not associated with any session ID. 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)을 참조하세요.For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

쿼리는 is_user_process 시스템 프로세스를 사용자 프로세스에서 분리 하는 sys.dm_exec_sessions의 열입니다.Query the is_user_process column of sys.dm_exec_sessions to separate system processes from user processes.

PermissionsPermissions

SQL ServerSQL Server 인스턴스에서 실행되는 모든 세션을 볼 수 있으려면 해당 서버에 대한 VIEW SERVER STATE 권한이 필요합니다.Requires VIEW SERVER STATE permission on the server to see all executing sessions on the instance of SQL ServerSQL Server. 그렇지 않으면 현재 세션만 사용자에게 표시됩니다.Otherwise, the user sees only the current session.

Examples

1.A. 현재 프로세스 모두 나열Listing all current processes

다음 예에서는 매개 변수 없이 sp_who를 사용하여 현재 사용자를 모두 보고합니다.The following example uses sp_who without parameters to report all current users.

USE master;  
GO  
EXEC sp_who;  
GO  

2.B. 특정 사용자의 프로세스 나열Listing a specific user's process

다음 예에서는 로그인 이름으로 한 명의 현재 사용자에 대한 정보를 보는 방법을 보여 줍니다.The following example shows how to view information about a single current user by login name.

USE master;  
GO  
EXEC sp_who 'janetl';  
GO  

3.C. 활성 프로세스 모두 표시Displaying all active processes

USE master;  
GO  
EXEC sp_who 'active';  
GO  

4.D. 세션 ID를 지정하여 특정 프로세스 표시Displaying a specific process identified by a session ID

USE master;  
GO  
EXEC sp_who '10' --specifies the process_id;  
GO  

관련 항목:See Also

sp_lock (Transact-SQL) sp_lock (Transact-SQL)
sys.sysprocesses (Transact SQL) sys.sysprocesses (Transact-SQL)
시스템 저장 프로시저(Transact-SQL)System Stored Procedures (Transact-SQL)