Перечислите запросы, работающие на SQL Server

В VS2015 выберите:

Тест-> Отладка-> Все тесты

Или вы можете выделить конкретный тест в редакторе и выбрать

Тест-> Отладка-> Выбранные тесты

192
задан BIBD 2 June 2009 в 09:35
поделиться

9 ответов

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)
194
ответ дан 23 November 2019 в 05:29
поделиться

Используйте Sql Server Profiler (меню инструментов) для мониторинга выполнения запросов и используйте монитор активности в Management Studio, чтобы узнать, как подключено соединение и блокирует ли их соединение другие соединения.

1
ответ дан 23 November 2019 в 05:29
поделиться

вот запрос, который покажет все блокирующие запросы. Я не совсем уверен, будет ли он просто отображать медленные запросы:

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 )
5
ответ дан 23 November 2019 в 05:29
поделиться

в 2005 году вы можете щелкнуть правой кнопкой мыши по базе данных, перейти к отчетам, и там будет целый список отчетов о переходах, блокировках и т. Д.

4
ответ дан 23 November 2019 в 05:29
поделиться

В обозревателе объектов перейдите к: Сервер -> Управление -> Монитор активности. Это позволит вам увидеть все подключения к текущему серверу.

8
ответ дан 23 November 2019 в 05:29
поделиться

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.

16
ответ дан 23 November 2019 в 05:29
поделиться

На самом деле, выполнение 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

Имейте в виду, что профилировщик действительно является приложением для ведения журнала и наблюдения. Он будет продолжать регистрировать и смотреть, пока работает. Он может заполнять текстовые файлы, базы данных или жесткие диски, поэтому будьте осторожны, что вам нужно смотреть и как долго.

11
ответ дан 23 November 2019 в 05:29
поделиться

Вы можете запустить команду sp_who , чтобы получить список всех текущих пользователей, сеансов и процессов. Затем вы можете запустить команду KILL на любом spid, который блокирует других.

30
ответ дан 23 November 2019 в 05:29
поделиться

Если вы используете SQL Server 2005 или 2008, вы можно использовать DMV, чтобы найти это ...

SELECT  *
FROM    sys.dm_exec_requests  
        CROSS APPLY sys.dm_exec_sql_text(sql_handle)  
90
ответ дан 23 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: