내보내기(0) 인쇄
모두 확장
확장 최소화
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

sp_who(Transact-SQL)

Microsoft SQL Server 데이터베이스 엔진 인스턴스의 현재 사용자, 세션 및 프로세스에 대한 정보를 제공합니다. 유휴 상태가 아닌 프로세스, 특정 사용자에게 속한 프로세스 또는 특정 세션에 속하는 프로세스만 반환하도록 이 정보를 필터링할 수 있습니다.

적용 대상: SQL Server(SQL Server 2008부터 현재 버전까지).

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

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

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

결과 세트를 필터링하는 데 사용됩니다.

login은 특정 로그인에 속하는 프로세스를 식별하는 sysname입니다.

session ID는 SQL Server 인스턴스에 속하는 세션 ID입니다. session IDsmallint입니다.

ACTIVE를 지정하면 사용자로부터 다음 명령을 기다리고 있는 세션은 제외됩니다.

값을 지정하지 않으면 인스턴스에 속하는 모든 세션이 보고됩니다.

0(성공) 또는 1(실패)

sp_who는 다음 정보가 포함된 결과 집합을 반환합니다.

데이터 형식

설명

spid

smallint

세션 ID입니다.

ecid

smallint

특정 세션 ID와 연결된 지정된 스레드의 실행 컨텍스트 ID입니다.

ECID = {0, 1, 2, 3, ...n}이며 여기서 0은 항상 주 또는 부모 스레드를 의미하고 {1, 2, 3, ...n}은 하위 스레드를 의미합니다.

status

nchar(30)

프로세스 상태입니다. 가능한 값은 아래와 같습니다.

유휴 상태. SQL Server에서 세션을 다시 설정하고 있습니다.

running. 세션에서 일괄 처리를 하나 이상 실행하고 있습니다. MARS(Multiple Active Result Sets)를 설정하면 세션에서 여러 개의 일괄 처리를 실행할 수 있습니다. 자세한 내용은 MARS(Multiple Active Result Sets) 사용을 참조하십시오.

background. 세션에서 교착 상태 감지와 같은 백그라운드 태스크를 실행하고 있습니다.

rollback. 세션에서 트랜잭션 롤백을 진행하고 있습니다.

pending. 세션이 작업자 스레드를 사용할 수 있을 때까지 기다리고 있습니다.

runnable. 세션의 태스크는 시간 퀀텀을 얻기 위해 기다리는 동안 스케줄러의 실행 가능한 큐에 있습니다.

spinloop. 세션의 태스크가 spinlock을 사용할 수 있을 때까지 기다리고 있습니다.

suspended. 세션이 I/O와 같은 이벤트가 완료되기를 기다리고 있습니다.

loginame

nchar(128)

특정 프로세스와 연결된 로그인 이름입니다.

hostname

nchar(128)

각 프로세스의 호스트 또는 컴퓨터 이름입니다.

blk

char(5)

프로세스를 차단하기 위한 세션 ID입니다(존재하는 경우). 없는 경우 이 열은 0이 됩니다.

분리된 분산 트랜잭션이 지정된 세션 ID와 연결된 트랜잭션을 차단하는 경우 이 열은 분리된 트랜잭션을 차단하기 위한 값으로 '-2'를 반환합니다.

dbname

nchar(128)

프로세스가 사용하는 데이터베이스입니다.

cmd

nchar(16)

프로세스에 대해 실행 중인 데이터베이스 엔진 명령(Transact-SQL 문, 내부 데이터베이스 엔진 프로세스 등)입니다.

request_id

int

특정 세션에서 실행 중인 요청에 대한 ID입니다.

병렬 처리의 경우 특정 세션 ID에 대해 하위 스레드가 생성됩니다. 주 스레드는 spid = <xxx>ecid =0으로 표시됩니다. 다른 하위 스레드의 경우 spid = <xxx>는 동일하지만 ecid > 0이 다릅니다.

차단 프로세스(배타 잠금이 설정된 경우도 있음)는 다른 프로세스에 필요한 리소스를 보유하고 있는 프로세스입니다.

모든 분리된 분산 트랜잭션에는 세션 ID 값 '-2'가 할당됩니다. 분리된 분산 트랜잭션은 어떤 세션 ID와도 연결되지 않은 분산 트랜잭션입니다. 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)을 참조하십시오.

사용자 프로세스와 시스템 프로세스를 구분하려면 sys.dm_exec_sessions의 is_user_process 열을 쿼리합니다.

SQL Server 인스턴스에서 실행되는 모든 세션을 볼 수 있으려면 해당 서버에 대한 VIEW SERVER STATE 권한이 필요합니다. 그렇지 않으면 현재 세션만 사용자에게 표시됩니다.

1.현재 프로세스 모두 나열

다음 예에서는 매개 변수 없이 sp_who를 사용하여 현재 사용자를 모두 보고합니다.

USE master;
GO
EXEC sp_who;
GO

2.특정 사용자의 프로세스 나열

다음 예에서는 로그인 이름으로 한 명의 현재 사용자에 대한 정보를 보는 방법을 보여 줍니다.

USE master;
GO
EXEC sp_who 'janetl';
GO

3.활성 프로세스 모두 표시

USE master;
GO
EXEC sp_who 'active';
GO

4.세션 ID를 지정하여 특정 프로세스 표시

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

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft