此RPC请求中提供的参数太多.最高为2100.?

Dev*_*ris 23 .net c# sql-server ibatis.net

搜索查询返回此错误.我有一种感觉,因为当我试图对另一个对象进行ORM时,in子句在下属对象上是巨大的.

显然,在子句中不应该一次构建1个参数.谢谢ibatis.

JP *_*oto 21

最好的办法是修改应用程序,将少于2100个参数传递给存储过程.这是无法引发DBMS限制.


Kon*_*man 15

当使用显然无辜的LINQ to SQL查询时,我得到了同样的错误.我只是想检索其ID是存储在数组中的所有记录:

dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();
Run Code Online (Sandbox Code Playgroud)

事实证明,ids数组有超过2100项,似乎DataContext为生成的SQL查询中的数组中的每个项添加一个参数.

最后,这是我的代码中的一个错误,因为ids数组没有这么多的项目.但无论如何,值得记住的是,在LINQ to SQL中使用此类构造时需要进行一些额外的验证.


Aar*_*ton 9

你可以做一些事情:

  1. 将params泵入临时表并使用所述临时表来过滤查询.请参阅/sf/answers/696308161/
  2. 创建一个逗号分隔的数组,并将该数组作为varchar(x)传递给SQL Server.通过TSQL将其拆分(这里有一些方法)并使用生成的行集来过滤搜索结果.
  3. 看看你的应用程序逻辑.将2100个参数传递给存储过程有点奇怪.