Всяка SQL партида трябва да отговаря на ограничението за размер на партидата:65 536 * Размер на мрежовия пакет.
Освен това, вашата заявка е ограничена от условията на изпълнение. Обикновено ще свърши размера на стека, защото x IN (a,b,c) не е нищо друго освен x=a ИЛИ x=b ИЛИ x=c, което създава дърво на изрази, подобно на x=a ИЛИ (x=b ИЛИ (x =c)), така че става много дълбоко с голям брой ИЛИ. SQL 7 би ударил SO при около 10k стойности в IN, но в днешно време стекове са много по-дълбоки (заради x64), така че може да отиде доста дълбоко.
Актуализиране
Вече намерихте статията на Ерланд по темата за предаване на списъци/масиви към SQL Server. Със SQL 2008 имате и параметри с стойност на таблица, които ви позволяват да предадете цяла DataTable като параметър от един тип таблица и да се присъедините към нея.
XML и XPath са друго жизнеспособно решение:
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;