2010-08-26 9 views

cevap

92

Evet, bir göz atın, bu 50 En son çalıştırılan SQL beyanlara size yukarı

sql 2005 ve yalnızca

SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName, 
    execution_count,s2.objectid, 
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset/2+1 , 
     ((CASE WHEN statement_end_offset = -1 
    THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2) 
ELSE statement_end_offset END)- statement_start_offset)/2+1)) AS sql_statement, 
     last_execution_time 
FROM sys.dm_exec_query_stats AS s1 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2) x 
WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %' 
--and OBJECTPROPERTYEX(x.objectid,'IsProcedure') = 1 
ORDER BY last_execution_time DESC 
+0

37000 (321) [Microsoft] [ODBC SQL Server sürücüsü] [verecektir SQL Server] "sql_handle" tanınmış bir tablo ipucu seçeneği değil. Tablo değerli bir işlev için bir parametre olarak amaçlanmışsa, veritabanı uyumluluk modunuzun 90 olarak ayarlandığından emin olun. –

+0

2005 ve yukarda söylediğim gibi, 2000 çalışma profiler için. Bir sonraki sefer SQL Server'ın hangi sürümünü çalıştırdığınızı belirtin – SQLMenace

+0

Microsoft SQL Server 2005 - 9.00 –

1

Bildiğim kadarıyla tek yolu SQL Server Profiler çalışan sahip olmaktır. Ne yazık ki, bu işlemin yürütülmekte olan sorgulardan önce başlatılması gerekiyor, bu yüzden "ad hoc" temelinde gerçekleşen bir şeyi yakalamayı umuyorsanız, uygun olmayacaktır. Bir kod parçasının ne yaptığını izlemeye çalışıyor ve yürütmekte olduğu sorguları yakalamak istiyorsa, bir tedavi çalışması yapmalısınız.

24

SQL Server 2005+ kullanılıyorsa:

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
ORDER BY deqs.last_execution_time DESC 

Büyük uç SQLAuthority dan!