Isso mostrará os SPIDs mais antigos em um servidor SQL 2000 ou SQL 2005:
select
P.spid
, right(convert(varchar,
dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'),
121), 12) as 'batch_duration'
, P.program_name
, P.hostname
, P.loginame
from master.dbo.sysprocesses P
where P.spid > 50
and P.status not in ('background', 'sleeping')
and P.cmd not in ('AWAITING COMMAND'
,'MIRROR HANDLER'
,'LAZY WRITER'
,'CHECKPOINT SLEEP'
,'RA MANAGER')
order by batch_duration desc
Se você precisar ver o SQL em execução para um determinado spid a partir dos resultados, use algo como isto:
declare
@spid int
, @stmt_start int
, @stmt_end int
, @sql_handle binary(20)
set @spid = XXX -- Fill this in
select top 1
@sql_handle = sql_handle
, @stmt_start = case stmt_start when 0 then 0 else stmt_start / 2 end
, @stmt_end = case stmt_end when -1 then -1 else stmt_end / 2 end
from sys.sysprocesses
where spid = @spid
order by ecid
SELECT
SUBSTRING( text,
COALESCE(NULLIF(@stmt_start, 0), 1),
CASE @stmt_end
WHEN -1
THEN DATALENGTH(text)
ELSE
(@stmt_end - @stmt_start)
END
)
FROM ::fn_get_sql(@sql_handle)
ms
quantização pors
. Um possível estouro pode ocorrer (aconteceu comigo).Se você estiver executando o SQL Server 2005 ou 2008, poderá usar as DMVs para encontrar isso ...
fonte
Você pode executar o comando sp_who para obter uma lista de todos os usuários, sessões e processos atuais. Você pode executar o comando KILL em qualquer spid que esteja bloqueando outros.
fonte
Eu sugeriria consultar os
sys
pontos de vista. algo parecido comDessa forma, você pode obter um
TotalPagesAllocated
que pode ajudá-lo a descobrir ospid
que está consumindo todos os recursos do servidor. Muitas vezes não consigo exibir o monitor de atividades e usar essassys
visualizações para ver o que está acontecendo.Eu recomendo que você leia o seguinte artigo. Eu tenho essa referência daqui .
fonte
Existem várias visualizações de gerenciamento incorporadas ao produto. No SQL 2000, você usaria sysprocesses . No SQL 2K5, há mais visualizações como sys.dm_exec_connections , sys.dm_exec_sessions e sys.dm_exec_requests .
Também existem procedimentos como sp_who que aproveitam essas visualizações. No 2K5 Management Studio, você também obtém o Activity Monitor.
E por último, mas não menos importante, existem scripts contribuídos pela comunidade como o Who Is Active, de Adam Machanic .
fonte
Na verdade, a execução
EXEC sp_who2
no Query Analyzer / Management Studio fornece mais informações do quesp_who
.Além disso, você pode configurar o SQL Profiler para assistir todo o tráfego de entrada e saída do servidor. O Profiler também permite restringir exatamente o que você está assistindo.
Para o SQL Server 2008:
Lembre-se de que o criador de perfil é realmente um aplicativo de registro e visualização. Ele continuará a registrar e assistir enquanto estiver em execução. Ele pode preencher arquivos de texto ou bancos de dados ou discos rígidos; portanto, tenha cuidado com o que vê e por quanto tempo.
fonte
fonte
Como uma observação, o Monitor de Atividade do SQL Server para SQL Server 2008 pode ser encontrado clicando com o botão direito do mouse no servidor atual e acessando "Monitor de Atividade" no menu de contexto. Eu achei que essa era a maneira mais fácil de eliminar processos se você estiver usando o SQL Server Management Studio.
fonte
No Pesquisador de Objetos, faça uma busca detalhada em: Servidor -> Gerenciamento -> Monitor de Atividade. Isso permitirá que você veja todas as conexões no servidor atual.
fonte
Aqui está uma consulta que mostrará todas as consultas que estão bloqueando. Não tenho muita certeza se isso mostrará apenas consultas lentas:
fonte
O script correto seria assim:
fonte
Você pode usar a consulta abaixo para encontrar a última solicitação em execução:
Usando o script abaixo, você também pode encontrar o número de conexões por banco de dados:
Para obter mais detalhes, visite: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
fonte
em 2005, você pode clicar com o botão direito do mouse em um banco de dados, acessar relatórios e há uma lista completa de relatórios sobre transições e bloqueios, etc.
fonte
Tente com isto:
Ele fornecerá todas as consultas de usuário. Até o 50, todos são sessões de processo interno do servidor sql. Mas, se você quiser, pode remover a cláusula where:
fonte
E
fonte
Use o Sql Server Profiler (menu Ferramentas) para monitorar a execução de consultas e use o monitor de atividades no Management studio para ver como está conectado e se a conexão deles está bloqueando outras conexões.
fonte
Você deve tentar um procedimento muito útil
sp_whoIsActive
que pode ser encontrado aqui: http://whoisactive.com e é gratuito.fonte