Mỗi lô SQL phải phù hợp với Giới hạn kích thước hàng loạt:65,536 * Kích thước gói mạng.
Ngoài ra, truy vấn của bạn bị giới hạn bởi các điều kiện thời gian chạy. Nó thường sẽ hết kích thước ngăn xếp vì x IN (a, b, c) không là gì ngoài x =a OR x =b OR x =c tạo ra cây biểu thức tương tự như x =a OR (x =b OR (x =c)), vì vậy nó rất sâu với một số lượng lớn OR. SQL 7 sẽ đạt SO ở khoảng 10k giá trị trong IN, nhưng các ngăn xếp ngày nay sâu hơn nhiều (vì x64), vì vậy nó có thể đi khá sâu.
Cập nhật
Bạn đã tìm thấy bài viết của Erland về chủ đề chuyển danh sách / mảng sang SQL Server. Với SQL 2008, bạn cũng có các Tham số Giá trị Bảng cho phép bạn chuyển toàn bộ DataTable dưới dạng một tham số loại bảng duy nhất và tham gia vào đó.
XML và XPath là một giải pháp khả thi khác:
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;