搜索查询返回了此错误。我有一种感觉,因为当我试图对另一个对象进行 ORM 时,in 子句对从属对象来说是巨大的。
显然,在子句中不应一次构建 1 个参数。谢谢伊巴蒂斯。
搜索查询返回了此错误。我有一种感觉,因为当我试图对另一个对象进行 ORM 时,in 子句对从属对象来说是巨大的。
显然,在子句中不应一次构建 1 个参数。谢谢伊巴蒂斯。
最好的办法是修改您的应用程序以将少于 2100 个参数传递给存储过程。这是一个不能提高的 DBMS 限制。
在使用看似无辜的 LINQ to SQL 查询时,我遇到了同样的错误。我只是想检索其 id 存储在数组中的所有记录:
dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();
原来 ids 数组有超过 2100 项,似乎 DataContext 在生成的 SQL 查询中为数组中的每个项添加了一个参数。
最后,这是我的代码中的一个错误,因为 ids 数组不必有这么多项目。但无论如何,值得记住的是,在 LINQ to SQL 中使用此类构造时需要进行一些额外的验证。
你可以做几件事:
如果您将 2100 个参数传递给单个存储过程,那么您只是做错了事。不要提高限制或试图解决这个可憎的问题,弄清楚如何正确地做事。