Nieskończona pętla CTE z opcją (maxrecursion 0)

Mam zapytanie CTE z dużym rekordem. Wcześniej działało dobrze. Ale ostatnio rzuca błąd dla niektórych członków

Oświadczenie zostało zakończone. Maksymalna rekursja 100 została wyczerpana przed zakończeniem instrukcji.

Więc umieściłemOPTION (maxrecursion 0) lubOPTION (maxrecursion 32767) na moje zapytanie, ponieważ nie chcę ograniczać rekordów. Ale rezultat jest taki, że ładowanie trwa wiecznie. Jak to rozwiązać?

Oto mój kod:

with cte as(
-- Anchor member definition
    SELECT  e.SponsorMemberID , e.MemberID, 1 AS Level
    FROM tblMember AS e 
    where e.memberid = @MemberID

union all

-- Recursive member definition
    select child.SponsorMemberID , child.MemberID, Level + 1
    from tblMember child 

join cte parent

on parent.MemberID = child.SponsorMemberID
)
-- Select the CTE result
    Select distinct a.* 
    from cte a
    option (maxrecursion 0)

EDYTOWAĆ: usuń niepotrzebny kod, aby go łatwo zrozumieć

ROZWIĄZANY: Więc problem nie pochodzimaxrecursion. To z CTE. Nie wiem dlaczego, ale może zawierać cykle sponsora: A -> B -> C -> A -> ... (dzięki @HABO)

Próbowałem tej metody i działa.Nieskończona pętla w CTE podczas analizowania tabeli odwołującej się do siebie

questionAnswers(1)

yourAnswerToTheQuestion