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