Spowoduje to wyświetlenie najdłużej działających identyfikatorów SPID na serwerze SQL 2000 lub 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
Jeśli chcesz zobaczyć, jak SQL działa dla danego pająka z wyników, użyj czegoś takiego:
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
kwantyzacjis
. Może wystąpić przepełnienie (stało się dla mnie).Jeśli korzystasz z SQL Server 2005 lub 2008, możesz użyć DMV do znalezienia tego ...
źródło
Możesz uruchomić polecenie sp_who, aby uzyskać listę wszystkich bieżących użytkowników, sesji i procesów. Następnie możesz uruchomić komendę KILL dla dowolnego pająka, który blokuje inne.
źródło
Sugerowałbym zapytanie o
sys
widoki. coś podobnego doW ten sposób możesz uzyskać coś,
TotalPagesAllocated
co pomoże ci dowiedzieć się,spid
że zajmuje wszystkie zasoby serwera. Wiele razy nie mogę nawet przywołać monitora aktywności i użyć tychsys
widoków, aby zobaczyć, co się dzieje.Poleciłbym przeczytanie następującego artykułu. Mam stąd ten odnośnik .
źródło
W produkcie wbudowane są różne widoki zarządzania. W SQL 2000 użyłbyś sysprocesses . W SQL 2K5 jest więcej widoków takich jak sys.dm_exec_connections , sys.dm_exec_sessions i sys.dm_exec_requests .
Istnieją również procedury takie jak sp_who, które wykorzystują te widoki. W 2K5 Management Studio otrzymujesz również Monitor aktywności.
I wreszcie, są też skrypty wnoszone przez społeczność, takie jak Who Is Active Adama Machanica .
źródło
W rzeczywistości uruchomienie
EXEC sp_who2
w Query Analyzer / Management Studio daje więcej informacji niżsp_who
.Oprócz tego można skonfigurować SQL Profiler do monitorowania całego ruchu przychodzącego i wychodzącego na serwer. Profiler pozwala również zawęzić dokładnie to, czego szukasz.
W przypadku SQL Server 2008:
Pamiętaj, że profiler jest naprawdę aplikacją do logowania i oglądania. Będzie nadal się logować i oglądać tak długo, jak działa. Może wypełniać pliki tekstowe, bazy danych lub dyski twarde, więc bądź ostrożny z tym, co oglądasz i na jak długo.
źródło
źródło
Uwaga: Monitor aktywności programu SQL Server dla programu SQL Server 2008 można znaleźć, klikając prawym przyciskiem myszy aktualny serwer i przechodząc do menu „Monitor aktywności” w menu kontekstowym. Odkryłem, że jest to najłatwiejszy sposób na zabicie procesów, jeśli używasz SQL Server Management Studio.
źródło
W Eksploratorze obiektów przejdź do: Serwer -> Zarządzanie -> Monitor aktywności. Umożliwi to wyświetlenie wszystkich połączeń z bieżącym serwerem.
źródło
oto zapytanie, które pokaże wszelkie zapytania, które blokują. Nie jestem do końca pewien, czy pokaże tylko wolne zapytania:
źródło
Właściwy skrypt wyglądałby tak:
źródło
Możesz użyć poniższego zapytania, aby znaleźć uruchomione ostatnie żądanie:
Za pomocą poniższego skryptu możesz również znaleźć liczbę połączeń na bazę danych:
Więcej informacji można znaleźć na stronie: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
źródło
w 2005 roku możesz kliknąć bazę danych prawym przyciskiem myszy, przejść do raportów, a cała lista raportów dotyczących przejść i blokad itp.
źródło
Spróbuj tego:
Zapewni Ci wszystkie zapytania użytkowników. Do spid 50 wszystko to są sesje procesów wewnętrznych serwera SQL. Ale jeśli chcesz, możesz usunąć klauzulę where:
źródło
I
źródło
Użyj Sql Server Profiler (menu narzędzi) do monitorowania wykonywania zapytań i użyj monitora aktywności w Management Studio, aby zobaczyć, jak się łączy i czy ich połączenie blokuje inne połączenia.
źródło
Powinieneś spróbować bardzo przydatnej procedury,
sp_whoIsActive
którą można znaleźć tutaj: http://whoisactive.com i jest bezpłatna.źródło