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

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Fornece informações sobre os usuários atuais, sessões e processos em uma instância das MicrosoftMicrosoft Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine.Provides information about current users, sessions, and processes in an instance of the MicrosoftMicrosoft Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine. As informações podem ser filtradas para retornar somente os processos que não estão ociosos, que pertencem a um usuário específico ou que pertencem a uma sessão específica.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.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

[ @loginame = ] 'login' | session ID | 'ACTIVE' É usado para filtrar o conjunto de resultados.[ @loginame = ] 'login' | session ID | 'ACTIVE' Is used to filter the result set.

login está sysname que identifica os processos que pertencem a um logon específico.login is sysname that identifies processes belonging to a particular login.

ID da sessão é um número de identificação de sessão que pertence ao SQL ServerSQL Server instância.session ID is a session identification number belonging to the SQL ServerSQL Server instance. ID da sessão está smallint.session ID is smallint.

Active Directory exclui sessões que estão aguardando o próximo comando do usuário.ACTIVE excludes sessions that are waiting for the next command from the user.

Se nenhum valor for fornecido, o procedimento relatará todas as sessões que pertencem à instância.If no value is provided, the procedure reports all sessions belonging to the instance.

Valores do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

Conjuntos de resultadosResult Sets

SP_WHO retorna um conjunto de resultados com as informações a seguir.sp_who returns a result set with the following information.

colunaColumn Data typeData type DescriçãoDescription
spidspid smallintsmallint ID da sessão.Session ID.
ecidecid smallintsmallint ID do contexto de execução de determinado thread associado a uma ID de sessão específica.Execution context ID of a given thread associated with a specific session ID.

ECID = {0, 1, 2, 3,... n}, onde 0 representa sempre principal ou thread pai e {1, 2, 3,... n} representa os subthreads.ECID = {0, 1, 2, 3, ...n}, where 0 always represents the main or parent thread, and {1, 2, 3, ...n} represent the subthreads.
statusstatus nchar(30)nchar(30) Status do processo.Process status. Os valores possíveis são:The possible values are:

dormant.dormant. O SQL ServerSQL Server está reiniciando a sessão.SQL ServerSQL Server is resetting the session.

executando.running. A sessão está executando um ou mais lotes.The session is running one or more batches. Quando são habilitados MARS (Vários Conjuntos de Resultados Ativos), uma sessão pode executar vários lotes.When Multiple Active Result Sets (MARS) is enabled, a session can run multiple batches. Para obter mais informações, confira Usando o MARS (conjunto de resultados ativos múltiplos).For more information, see Using Multiple Active Result Sets (MARS).

plano de fundo.background. A sessão está executando uma tarefa em segundo plano, como detecção de deadlock.The session is running a background task, such as deadlock detection.

reversão.rollback. A sessão tem uma reversão de transação em processo.The session has a transaction rollback in process.

pendente.pending. A sessão está aguardando que um thread de trabalho seja disponibilizado.The session is waiting for a worker thread to become available.

executável.runnable. A tarefa da sessão está na fila executável de um agendador enquanto aguarda para obter um quantum de hora.The session's task is in the runnable queue of a scheduler while waiting to get a time quantum.

spinloop.spinloop. A tarefa da sessão está aguardando que um spinlock seja liberado.The session's task is waiting for a spinlock to become free.

suspenso.suspended. A sessão está aguardando que um evento, como E/S, seja concluído.The session is waiting for an event, such as I/O, to complete.
loginameloginame nchar(128)nchar(128) Nome de logon associado a determinado processo.Login name associated with the particular process.
nome do hosthostname nchar(128)nchar(128) Nome do host ou computador de cada processo.Host or computer name for each process.
blkblk char(5)char(5) ID de sessão do processo de bloqueio, se houver.Session ID for the blocking process, if one exists. Caso contrário, essa coluna será zero.Otherwise, this column is zero.

Quando uma transação associada a uma ID de sessão especificada for bloqueada por uma transação distribuída órfã, essa coluna retornará um '-2' para o bloqueio da transação órfã.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) Banco de dados usado pelo processo.Database used by the process.
cmdcmd nchar(16)nchar(16) Comando Mecanismo de Banco de DadosDatabase Engine (instrução Transact-SQLTransact-SQL, processo Mecanismo de Banco de DadosDatabase Engine interno e assim por diante) sendo executado para o processo.Mecanismo de Banco de DadosDatabase Engine command (Transact-SQLTransact-SQL statement, internal Mecanismo de Banco de DadosDatabase Engine process, and so on) executing for the process.
request_idrequest_id intint ID de solicitações em execução em uma sessão específica.ID for requests running in a specific session.

No caso de processamento paralelo, são criados subthreads para a ID de sessão específica.In case of parallel processing, subthreads are created for the specific session ID. O thread principal é indicado como spid = <xxx> e ecid =0.The main thread is indicated as spid = <xxx> and ecid =0. Os outros subthreads têm o mesmo spid = <xxx>, mas com ecid > 0.The other subthreads have the same spid = <xxx>, but with ecid > 0.

ComentáriosRemarks

Um processo de bloqueio, que pode ter um bloqueio exclusivo, é um que está retendo recursos que outro processo precisa.A blocking process, which may have an exclusive lock, is one that is holding resources that another process needs.

Todas as transações distribuídas órfãs recebem o valor de ID da sessão de '-2'.All orphaned distributed transactions are assigned the session ID value of '-2'. As transações distribuídas órfãs são transações distribuídas que não estão associadas a qualquer ID de sessão.Orphaned distributed transactions are distributed transactions that are not associated with any session ID. Para obter mais informações, veja Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente (Modelo de recuperação completa).For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

Consulta de is_user_process coluna do DM exec_sessions para separar processos do sistema de processos do usuário.Query the is_user_process column of sys.dm_exec_sessions to separate system processes from user processes.

PermissõesPermissions

Requer permissão VIEW SERVER STATE no servidor para visualizar todas as sessões em execução na instância do SQL ServerSQL Server.Requires VIEW SERVER STATE permission on the server to see all executing sessions on the instance of SQL ServerSQL Server. Caso contrário, o usuário verá somente a sessão atual.Otherwise, the user sees only the current session.

ExemplosExamples

A.A. Relacionando todos os processos atuaisListing all current processes

O exemplo a seguir usa sp_who sem parâmetros para relatar todos os usuários atuais.The following example uses sp_who without parameters to report all current users.

USE master;  
GO  
EXEC sp_who;  
GO  

B.B. Relacionando um processo de um usuário específicoListing a specific user's process

O exemplo a seguir mostra como exibir informações sobre um único usuário atual através do nome de logon.The following example shows how to view information about a single current user by login name.

USE master;  
GO  
EXEC sp_who 'janetl';  
GO  

C.C. Exibindo todos os processos ativosDisplaying all active processes

USE master;  
GO  
EXEC sp_who 'active';  
GO  

D.D. Exibindo um processo específico identificado por uma ID de sessãoDisplaying a specific process identified by a session ID

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

Consulte tambémSee Also

sp_lock (Transact-SQL) sp_lock (Transact-SQL)
sys.sysprocesses (Transact-SQL) sys.sysprocesses (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)System Stored Procedures (Transact-SQL)