Можно ли регистрировать текст каждого запроса, выполненного на SQL Server? - PullRequest
0 голосов
/ 14 января 2012

У нас есть повторяющаяся ситуация, когда несколько раз в неделю наше приложение перестает отвечать. То, что я хотел бы сделать, это иметь возможность просматривать текст запроса, работающего на SQL Server.

Я могу использовать sp_who, чтобы увидеть открытые соединения, но он не отображает фактический текст запроса.

Если я вижу запрос, который замораживает мою базу данных, у меня может быть отправная точка для оптимизации.

Это произошло несколько минут назад, и нашему администратору системы пришлось перезагрузить окно. Эта перезагрузка не является устойчивой.

Какие шаги мне предпринять?

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

SQL Server 2000

Ответы [ 2 ]

1 голос
/ 14 января 2012

используйте это, пока происходит блок:

SELECT
    r.session_id AS spid
        ,r.cpu_time,r.reads,r.writes,r.logical_reads 
        ,r.blocking_session_id AS BlockingSPID
        ,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
        ,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
        ,s.program_name
        ,s.login_name
        ,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
        ,SUBSTRING(st.text, (r.statement_start_offset/2)+1,( (CASE r.statement_end_offset
                                                                  WHEN -1 THEN DATALENGTH(st.text)
                                                                  ELSE r.statement_end_offset
                                                              END - r.statement_start_offset
                                                             )/2
                                                           ) + 1
                  ) AS SQLText
    FROM sys.dm_exec_requests                          r
        JOIN sys.dm_exec_sessions                      s ON r.session_id = s.session_id
        CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
    WHERE r.session_id!=@@SPID

здесь будут перечислены все активные SPID, которые их блокируют, и SQL каждого SPID

EDIT
этот запрос для SQL Server 2005+, первоначальный вопрос не был SQL Server 2000

0 голосов
/ 14 января 2012

См. Статью Как отслеживать блокировки в SQL Server 2005 и SQL Server 2000 для определения sp_blocker_pss08 (сценарий, совместимый с SQL Server 2000).

...