Consulta recursiva do SQL Server 2005 com loops em dados - é possível?

Eu tenho uma tabela padrão de chefe / funcionário subordinado. Eu preciso selecionar um chefe (especificado por ID) e todos os seus subordinados (e seus sub-graduados, etc). Infelizmente, os dados do mundo real têm alguns loops (por exemplo, os dois proprietários de empresas definem um ao outro como seu chefe). A consulta recursiva simples com um CTE engasga com isso (nível máximo de recursão de 100 excedido). Os funcionários ainda podem ser selecionados? Eu não me importo com a ordem em que eles são selecionados, só que cada um deles é selecionado uma vez.

Adicionado: Você quer minha consulta? Umm ... OK ... eu acho que é bem óbvio, mas - aqui está:

with
UserTbl as -- Selects an employee and his subordinates.
(
    select a.[User_ID], a.[Manager_ID] from [User] a WHERE [User_ID] = @UserID
    union all
    select a.[User_ID], a.[Manager_ID] from [User] a join UserTbl b on (a.[Manager_ID]=b.[User_ID])
)
select * from UserTbl

Adicionado 2: Ah, no caso de não estar claro - este é um sistema de produção e eu tenho que fazer um pequeno upgrade (basicamente adicionar um tipo de relatório). Assim, prefiro não modificar os dados, se puderem ser evitados.

questionAnswers(10)

yourAnswerToTheQuestion