太多的参数,在此RPC请求中提供。 最大的是2100年?(Too many parameters

2019-06-23 20:52发布

搜索查询返回此错误。 我有一种感觉,因为它的条款是subordinant对象上极大的相,当我试图ORM的其他对象。

显然,在没有条款应建1个参数在同一时间。 谢谢ibatis的。

Answer 1:

最好的办法是修改您的应用程序传递小于2100点的参数的存储过程。 这是一个DBMS限制无法提高 。



Answer 2:

我使用显然无辜的LINQ to SQL查询时,得到这个同样的错误。 我只是想获取其ID的人当中存储在数组中的那些所有的记录:

dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();

原来的ID阵列有超过2100项,它似乎是在DataContext增加了一个参数在生成的SQL查询的阵列中的每个项目。

在结束这是在我的代码中的错误,因为IDS阵列,不让自己有这么多项目。 但无论如何,这是值得在LINQ使用这样的结构来SQL时要记住,需要一些额外的验证。



Answer 3:

你可以做几件事情:

  1. 泵PARAMS到一个临时表和使用该临时表来过滤查询。 见https://stackoverflow.com/a/9947259/37055
  2. 创建一个逗号分隔的阵列,并且该阵列到SQL Server通过作为一个varchar(X)。 拆分出来通过TSQL( 这里有一些方法 ),并使用所产生的行集来过滤搜索结果。
  3. 看看你的应用程序逻辑。 这是不是有点怪被路过的2100年参数的存储过程的更多。


Answer 4:

如果你是路过2100个参数,以一个单一的存储过程,你只是做错了什么。 不要抬起限制或尝试解决这个令人深恶痛绝,弄清楚如何做正确的事情。



文章来源: Too many parameters were provided in this RPC request. The maximum is 2100.?