Pourquoi un SystemOutMemoryException dans un trigger ?
Bonjour,
tout est dans le titre :roll:
voici le code c'est mieux que des mots :mrgreen:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
...
WHILE EXISTS(SELECT * FROM #TEMP WHERE OK = 0)
BEGIN
SELECT TOP 1
@R=TP.T_ID,
FROM #TEMP TP
INNER JOIN TEMPLATE T ON TP.T_ID=T.TEMPLATE_ID
INNER JOIN T_ARBO_PLN PLN ON T.PLAN_ID=PLN.PLN_ID
INNER JOIN T_ARBO_STN STN ON T.STN_ID=STN.STN_ID
INNER JOIN T_ARBO_FAL FAL ON T.FAL_ID=FAL.FAL_ID
WHERE OK =0
ORDER BY POND DESC, PLN.PLN_LEVEL DESC, STN.STN_LEVEL DESC, FAL.FAL_LEVEL DESC;
IF @@ERROR <> 0 GOTO LBL_ERROR;
UPDATE #TEMP SET OK = 1 WHERE T_ID= @R
IF @@ERROR <> 0 GOTO LBL_ERROR;
END
.... |
Ceci provoque un OutofMemory
Pourquoi? Merci d'avance car ça m'intrigue..
Je sais que si je supprime mes inner join et les order by il ne me fait plus l'erreur...
Donc il faudrait que je bidouille quelque chose mais je trouve bizarre que SQL Server me sort cette erreur...
Help me !!
j'ai peut être une piste...
Ne serait ce pas à cause de la table temporaire ?
car je pense qu'en faisant des inner join sur un table temporaire ça doit garder les liaisons en mémoire tout comme la table #TEMP et du coup ça doit prendre trop de ressource...