すべてのSQLバッチは、バッチサイズ制限:65,536*ネットワークパケットサイズに適合している必要があります。
それ以外は、クエリは実行時の条件によって制限されます。 x IN(a、b、c)はx =a OR x =b OR x =cに過ぎず、x =a OR(x =b OR(x =c))、したがって、ORの数が多いと非常に深くなります。 SQL 7はINで約10kの値でSOに到達しますが、最近ではスタックがはるかに深くなっているため(x64のため)、かなり深くなる可能性があります。
更新
リスト/配列をSQLServerに渡すというトピックに関するErlandの記事はすでに見つかりました。 SQL 2008には、DataTable全体を単一のテーブルタイプパラメーターとして渡し、それに結合できるテーブル値パラメーターもあります。
XMLとXPathは、もう1つの実行可能なソリューションです:
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;