Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Fornece informações sobre utilizadores atuais, sessões e processos numa instância do Mecanismo de Banco de Dados do SQL Server. A informação pode ser filtrada para devolver apenas aqueles processos que não estão inativos, que pertencem a um utilizador específico ou que pertencem a uma sessão específica.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_who [ [ @loginame = ] { 'login' | *session_id* | 'ACTIVE' } ]
[ ; ]
Arguments
[ @loginame = ] { 'login' | session_id | 'ATIVO' }
Usado para filtrar o conjunto de resultados.
Login é um nome de sistema que identifica processos pertencentes a um determinado login.
session_id é um número de identificação de sessão pertencente à instância SQL Server. session_id é pequeno.
ACTIVEexclui sessões que estão à espera do próximo comando do utilizador.
Se não for fornecido valor, o procedimento reporta todas as sessões pertencentes à instância.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Conjunto de resultados
sp_who devolve um conjunto de resultados com a seguinte informação.
| Coluna | Tipo de dados | Description |
|---|---|---|
spid |
smallint | ID da Sessão. |
ecid |
smallint | ID de contexto de execução de um determinado thread associado a um ID de sessão específico. ECID = { 0, 1, 2, 3, ... n }, onde 0 representa sempre o fio principal ou pai, e { 1, 2, 3, ... n } representam os subthreads. |
status |
NCAR (30) | Estado do processo. Os valores possíveis são: - dormant. O SQL Server está a reiniciar a sessão.- running. A sessão está a executar um ou mais lotes. Quando o Multiple Active Result Sets (MARS) está ativado, uma sessão pode executar vários lotes. Para obter mais informações, consulte Usando vários conjuntos de resultados ativos (MARS).- background. A sessão está a executar uma tarefa em segundo plano, como a deteção de deadlocks.- rollback. A sessão tem uma reversão de transações em andamento.- pending. A sessão está à espera que um tópico de trabalho fique disponível.- runnable. A tarefa da sessão está na fila executável de um agendador enquanto se espera obter um quantum de tempo.- spinloop. A tarefa da sessão é esperar que um spinlock fique livre.- suspended. A sessão está à espera que um evento, como I/O, seja concluído. |
loginame |
nchar(128) | Nome de login associado ao processo específico. |
hostname |
nchar(128) | Nome do anfitrião ou computador para cada processo. |
blk |
char(5) | ID de sessão para o processo de bloqueio, se existir. Caso contrário, esta coluna é 0.Quando uma transação associada a um ID de sessão especificado é bloqueada por uma transação distribuída órfã, esta coluna devolve a -2 para a transação órfã bloqueadora. |
dbname |
nchar(128) | Base de dados utilizada pelo processo. |
cmd |
NCAR (16) | Database Engine comando (Transact-SQL instrução, processo interno Database Engine, e assim sucessivamente) a executar o processo. No SQL Server 2019 (15.x) e versões posteriores, o tipo de dado é nchar(26). |
request_id |
int | ID para pedidos a correr numa sessão específica. |
Com processamento paralelo, são criados subthreads para o ID específico da sessão. O fio principal é indicado como spid = <xxx> e ecid = 0. Os outros subthreads têm o mesmo spid = <xxx>, mas com ecid > 0.
Remarks
Um processo de bloqueio, que pode ter um bloqueio exclusivo, é aquele que retém recursos que outro processo necessita.
Todas as transações distribuídas órfãs recebem o valor de ID de sessão de -2. Transações distribuídas órfãs são transações distribuídas que não estão associadas a qualquer ID de sessão. Para mais informações, consulte Usar Transações Marcadas para Recuperar Bases de Dados Relacionadas de forma consistente.
Consulte a is_user_process coluna de sys.dm_exec_sessions para separar os processos do sistema dos processos do utilizador.
Permissions
Requer VIEW permissão SERVER STATE no servidor para ver todas as sessões em execução na instância do SQL Server. Caso contrário, o utilizador vê apenas a sessão atual.
Examples
A. Liste todos os processos atuais
O exemplo seguinte utiliza sp_who sem parâmetros para reportar todos os utilizadores atuais.
USE master;
GO
EXECUTE sp_who;
GO
B. Liste o processo de um utilizador específico
O exemplo seguinte mostra como visualizar informações sobre um único utilizador atual por nome de login.
USE master;
GO
EXECUTE sp_who 'janetl';
GO
C. Mostrar todos os processos ativos
USE master;
GO
EXECUTE sp_who 'active';
GO
D. Mostrar um processo específico identificado por um ID de sessão
USE master;
GO
EXECUTE sp_who '10'; --specifies the process_id;
GO