2010-08-26 33 views

Respuesta

92

Sí, echar un vistazo, esto le dará los 50 sentencias SQL ejecutadas más recientes

sql 2005 y sólo el

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 Driver] [ SQL Server] "sql_handle" no es una opción reconocida de pistas de tabla. Si está pensado como un parámetro para una función con valores de tabla, asegúrese de que el modo de compatibilidad de la base de datos esté establecido en 90. –

+0

Como dije en 2005 y solo arriba, para 2000 ejecute el generador de perfiles. La próxima vez, indique qué versión del servidor SQL está ejecutando – SQLMenace

+0

Microsoft SQL Server 2005 - 9.00 –

1

La única manera yo sepa es tener la SQL Server Profiler ejecución. Desafortunadamente, esto debe iniciarse antes de que se ejecuten las consultas, por lo que si espera detectar algo que sucede de manera "ad hoc", no será adecuado. Si intenta hacer un seguimiento de lo que está haciendo un código y desea capturar las consultas que ejecuta, debería funcionar.

24

Si utiliza SQL Server 2005 +:

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 

gran punta de SQLAuthority!

Cuestiones relacionadas