Rekurencyjne zapytanie SQL Server 2005 z pętlami w danych - czy to możliwe?

Mam standardową tabelę szefów / podwładnych. Muszę wybrać bossa (określonego przez ID) i wszystkich jego podwładnych (i ich subrodinaty itp.). Niestety dane z rzeczywistego świata zawierają pewne pętle (na przykład obaj właściciele firm mają siebie nawzajem jako swoich szefów). Proste zapytanie rekurencyjne z dławieniem CTE (maksymalny poziom rekurencji przekroczył 100). Czy pracownicy mogą być nadal wybierani? Nie zależy mi na kolejności, w jakiej są wybierane, tylko na to, że każdy z nich jest wybrany raz.

Dodany: Chcesz moje zapytanie? Umm ... OK ... choć wydaje mi się to oczywiste, ale - oto jest:

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

Dodano 2: Och, na wypadek, gdyby nie było to jasne - to jest system produkcyjny i muszę wykonać niewielką aktualizację (zasadniczo dodać rodzaj raportu). Dlatego wolę nie modyfikować danych, jeśli można tego uniknąć.

questionAnswers(10)

yourAnswerToTheQuestion