Bonjour,

J'essaie de voir dans une série de batchs (GO) quelles sont les performances de certaines parties de ces batchs.
Mais je ne trouve pas comment détecter une série de query et en tirer des statistiques.

J'ai essayé comme suit, mais ça ne fonctionne pas vraiment :
(déjà quand j’exécute plusieurs fois, les information de l'essaie précédent se cumulent XD)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
DECLARE @I INT
DECLARE @D DATETIME
 
SET @I = 0
SET @D = GETDATE()
/* Ce que je veux mesurer [... */
WHILE @I < 10
BEGIN
	<faire quelque chose>
 
	SET @I = @I + 1
END	
/* ...] */
 
SELECT
	T.text
	, COUNT(*)
	, SUM(S.total_logical_reads)
	, SUM(S.total_logical_writes)
	, SUM(total_physical_reads)
	, DATEDIFF(ms, @D, GETDATE())
FROM sys.dm_exec_requests AS R
INNER JOIN sys.dm_exec_query_stats AS S ON (
	S.sql_handle = R.sql_handle
)
CROSS APPLY sys.dm_exec_sql_text(S.sql_handle) AS T
WHERE R.session_id = @@SPID
AND S.last_execution_time BETWEEN @D AND GETDATE()
GROUP BY T.text
Je dois bien avouer être hyper novice dans l'emploie de ces tables (qui ne sont peut-être pas celles qu'il me faut).