Každá dávka SQL se musí vejít do limitu velikosti dávky:65 536 * Velikost síťového paketu.
Kromě toho je váš dotaz omezen běhovými podmínkami. Obvykle mu dojde velikost zásobníku, protože x IN (a,b,c) není nic jiného než x=a OR x=b OR x=c, což vytváří strom výrazů podobný x=a OR (x=b OR (x =c)), takže se dostane velmi hluboko s velkým počtem OR. SQL 7 by dosáhl SO při hodnotách IN asi 10k, ale v současnosti jsou stacky mnohem hlubší (kvůli x64), takže to může jít pěkně hluboko.
Aktualizovat
Již jste našli Erlandův článek na téma předávání seznamů/polí na SQL Server. S SQL 2008 máte také parametry tabulky hodnot, které vám umožňují předat celou DataTable jako jeden parametr typu tabulky a připojit se k ní.
XML a XPath jsou dalším životaschopným řešením:
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;