Każda partia SQL musi zmieścić się w limicie rozmiaru partii:65 536 * Rozmiar pakietu sieciowego.
Poza tym zapytanie jest ograniczone warunkami środowiska wykonawczego. Zwykle zabraknie rozmiaru stosu ponieważ x IN (a, b, c) to nic innego jak x=a OR x=b OR x=c co tworzy drzewo wyrażeńpodobne do x=a OR (x=b OR (x =c))), więc robi się bardzo głęboka z dużą liczbą OR. SQL 7 osiągnąłby SO przy około 10 tys. wartości w IN, ale w dzisiejszych czasach stosy są znacznie głębsze (ze względu na x64), więc może sięgać dość głęboko.
Aktualizacja
Znalazłeś już artykuł Erlanda na temat przekazywania list/tablic do SQL Server. W SQL 2008 dostępne są również parametry o wartościach tabeli, które pozwalają przekazać całą tabelę DataTable jako pojedynczy parametr typu tabeli i dołączyć do niej.
XML i XPath to kolejne realne rozwiązanie:
SELECT ...
FROM Table
JOIN (
SELECT x.value(N'.',N'uniqueidentifier') as guid
FROM @values.nodes(N'/guids/guid') t(x)) as guids
ON Table.guid = guids.guid;