Existe-t-il un moyen d'obtenir le texte SQL pour les dernières requêtes?
J'utilise Microsoft SQL Server 2005
Oui, jetez un œil, cela vous donnera les 50 dernières instructions SQL exécutées
sql 2005 et plus seulement
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
Si vous utilisez 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
Bon conseil de SQLAuthority !
La seule façon dont je suis au courant est d'exécuter SQL Server Profiler . Malheureusement, cela doit être démarré avant l'exécution des requêtes, donc si vous espérez attraper quelque chose qui s'est passé sur une base "ad hoc", cela ne conviendra pas. Si vous essayez de suivre ce que fait un morceau de code et que vous souhaitez capturer les requêtes qu'il exécute, cela devrait fonctionner comme un régal.