CTE de loop infinito com OPTION (maxrecursão 0)

Eu tenho consulta CTE com grande registro nele. Anteriormente funcionou bem. Mas ultimamente, isso gera um erro para alguns membros

A declaração terminou. A recursão máxima 100 foi esgotada antes da conclusão da instrução.

Então eu coloqueiOPTION (maxrecursion 0) ouOPTION (maxrecursion 32767) na minha consulta, porque eu não quero limitar os registros. Mas o resultado é que a consulta demora uma eternidade para carregar. Como eu resolvo isso?

Aqui está meu código:

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)

EDITAR: remover código desnecessário para facilitar a compreensão

RESOLVIDO: Então a questão não vem demaxrecursion. É do CTE. Eu não sei porque, mas possivelmente ele contém qualquer ciclo de patrocinador: A -> B -> C -> A -> ... (Graças a @HABO)

Eu tentei esse método e funciona.Loop infinito em CTE ao analisar tabela de auto-referência

questionAnswers(1)

yourAnswerToTheQuestion