Meu CTE roda em loop infinito para um cliente específico e não consigo descobrir o porquê.
Aqui está a consulta:
;WITH ClassTree
AS (SELECT ID, NAME, Parent_ID
FROM TableName
WHERE ID = 1
UNION ALL
SELECT T.ID, T.NAME, T.Parent_ID
FROM TableName T WITH (NOLOCK)
JOIN ClassTree
ON Parent_ID = ClassTree.ID
)
SELECT * FROM ClassTree
Aqui está uma coisinha que você pode usar para encontrar seus ciclos.
Resultado:
Acho que isso deve encontrar o registro do problema para você. Ele adiciona um
LEVEL
à sua hierarquia e, em seguida, procura um registro de ID individual que existe em vários níveis.A primeira coisa que eu faria é mudar isso:
para isso:
Pode estar tentando unir ClassTree a si mesmo, pois você não especificou o alias da tabela na junção.