2017-05-19 3 views
0

Hallo Ich versuche, eine recusrive Abfrage in SQL Server 2008 auszuführen. Für bestimmte Werte scheint die Abfrage für immer ausgeführt werden. Für andere Werte ist es sehr schnell (< 5s) Gibt es etwas, was ich in SQL tun könnte, um zu verhindern, dass die Abfrage für mehr als 10 Sekunden läuft?Rekursive Abfrage läuft unbegrenzt

WITH tree (FID,TID, level) AS (
     SELECT FID, TID, 1 as level 
     FROM table1 
     WHERE FID = '202223268' 

     UNION ALL 

     SELECT child.FID, child.TID, parent.level + 1 
     FROM table1 as child 
     JOIN tree parent on parent.TID = child.FID 
    ) 
     SELECT FID,TID 
     FROM tree 
     option (maxrecursion 0) 

Antwort

0

Ich würde nicht sagen, dass Sie das Ausführungs-Timeout auf Abfrage Basis begrenzen können (Sie auf Server-Ebene können), aber wenn Sie die Rekursionstiefe (Option MAXRECURSION) begrenzen können Sie sehr ähnliches Ergebnis erzielen.

+0

Danke für die Antwort. Ich brauche einen Weg, um unendliche Rekursion zu vermeiden. In Oracle scheint connect by nocycle vorher zu funktionieren. Gibt es eine Entsprechung in SQL Server? – user1603842