Выполнение запросов в SQL Server

Есть ли программа или SQL-запрос, который я могу найти, какие SQL-запросы выполняются на SQL Server 2012? Я думаю, что был инструмент в более ранней версии SQL Server, где отображается фактическое содержимое запроса или имя хранимой процедуры?

Ответ 1

вот что вам нужно для установки профайлера SQL http://msdn.microsoft.com/en-us/library/bb500441.aspx. Тем не менее, я предлагаю вам прочитать этот http://blog.sqlauthority.com/2009/08/03/sql-server-introduction-to-sql-server-2008-profiler-2/, если вы хотите сделать это на своей производственной среде. Есть еще один лучший способ взглянуть на запросы, наблюдая за этим, и посмотреть, помогает ли он http://www.youtube.com/watch?v=vvziPI5OQyE

Ответ 3

Я использую следующий запрос

SELECT   SPID       = er.session_id
    ,STATUS         = ses.STATUS
    ,[Login]        = ses.login_name
    ,Host           = ses.host_name
    ,BlkBy          = er.blocking_session_id
    ,DBName         = DB_Name(er.database_id)
    ,CommandType    = er.command
    ,ObjectName     = OBJECT_NAME(st.objectid)
    ,CPUTime        = er.cpu_time
    ,StartTime      = er.start_time
    ,TimeElapsed    = CAST(GETDATE() - er.start_time AS TIME)
    ,SQLStatement   = st.text
FROM    sys.dm_exec_requests er
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
    LEFT JOIN sys.dm_exec_sessions ses
    ON ses.session_id = er.session_id
LEFT JOIN sys.dm_exec_connections con
    ON con.session_id = ses.session_id
WHERE   st.text IS NOT NULL

Ответ 4

Средство называется SQL Server Profiler, оно все еще является частью стандартного набора инструментов.

Ответ 5

Вот это, из SQL Server DMV В книге действий:

На выходе показаны spid (идентификатор процесса), ecid (это похоже на поток в пределах одного и того же spid и полезно для идентификации параллельных запросов), пользователь, выполняющий SQL, статус (независимо от того, является ли SQL запуск или ожидание), состояние ожидания (почему его ожидание), имя хоста, имя домена и время начала (полезно для определения того, как долго работала партия).

Хорошей частью является запрос и родительский запрос. Это показывает, например, сохраненную proc как родительскую и запрос в сохраненном proc, который запущен. Это было очень удобно для меня. Надеюсь, это поможет кому-то другому.

USE master
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
er.session_Id AS [Spid]
, sp.ecid
, er.start_time
, DATEDIFF(SS,er.start_time,GETDATE()) as [Age Seconds]
, sp.nt_username
, er.status
, er.wait_type
, SUBSTRING (qt.text, (er.statement_start_offset/2) + 1,
((CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset
END - er.statement_start_offset)/2) + 1) AS [Individual Query]
, qt.text AS [Parent Query]
, sp.program_name
, sp.Hostname
, sp.nt_domain


FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50
AND session_Id NOT IN (@@SPID)
ORDER BY session_Id, ecid