В VS2015 выберите:
Тест-> Отладка-> Все тесты
Или вы можете выделить конкретный тест в редакторе и выбрать
Тест-> Отладка-> Выбранные тесты
This will show you the longest running SPIDs on a SQL 2000 or SQL 2005 server:
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
If you need to see the SQL running for a given spid from the results, use something like this:
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)
Используйте Sql Server Profiler (меню инструментов) для мониторинга выполнения запросов и используйте монитор активности в Management Studio, чтобы узнать, как подключено соединение и блокирует ли их соединение другие соединения.
вот запрос, который покажет все блокирующие запросы. Я не совсем уверен, будет ли он просто отображать медленные запросы:
SELECT p.spid
,convert(char(12), d.name) db_name
, program_name
, convert(char(12), l.name) login_name
, convert(char(12), hostname) hostname
, cmd
, p.status
, p.blocked
, login_time
, last_batch
, p.spid
FROM master..sysprocesses p
JOIN master..sysdatabases d ON p.dbid = d.dbid
JOIN master..syslogins l ON p.sid = l.sid
WHERE p.blocked = 0
AND EXISTS ( SELECT 1
FROM master..sysprocesses p2
WHERE p2.blocked = p.spid )
в 2005 году вы можете щелкнуть правой кнопкой мыши по базе данных, перейти к отчетам, и там будет целый список отчетов о переходах, блокировках и т. Д.
В обозревателе объектов перейдите к: Сервер -> Управление -> Монитор активности. Это позволит вам увидеть все подключения к текущему серверу.
There are various management views built into the product. On SQL 2000 you'd use sysprocesses. On SQL 2K5 there are more views like sys.dm_exec_connections, sys.dm_exec_sessions and sys.dm_exec_requests.
There are also procedures like sp_who that leverage these views. In 2K5 Management Studio you also get Activity Monitor.
And last but not least there are community contributed scripts like the Who Is Active by Adam Machanic.
На самом деле, выполнение EXEC sp_who2
в Query Analyzer / Management Studio дает больше информации, чем sp_who
.
Кроме того, вы можете настроить SQL Profiler чтобы следить за всем входящим и исходящим трафиком на сервер. Профилировщик также позволяет точно сузить круг вопросов.
Для SQL Server 2008:
START - All Programs - Microsoft SQL Server 2008 - Performance Tools - SQL Server Profiler
Имейте в виду, что профилировщик действительно является приложением для ведения журнала и наблюдения. Он будет продолжать регистрировать и смотреть, пока работает. Он может заполнять текстовые файлы, базы данных или жесткие диски, поэтому будьте осторожны, что вам нужно смотреть и как долго.
Вы можете запустить команду sp_who , чтобы получить список всех текущих пользователей, сеансов и процессов. Затем вы можете запустить команду KILL на любом spid, который блокирует других.
Если вы используете SQL Server 2005 или 2008, вы можно использовать DMV, чтобы найти это ...
SELECT *
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)