Можно ли регистрировать текст каждого запроса, выполненного на SQL Server?

StackOverflow https://stackoverflow.com/questions/8857674

Вопрос

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

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

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

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

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

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

SQL Server 2000

Это было полезно?

Решение

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

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

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

РЕДАКТИРОВАТЬ
Этот запрос предназначен для SQL Server 2005+, начальный вопрос не указал SQL Server 2000

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top