c# - keywords - Se proporcionaron demasiados parámetros en esta solicitud RPC. El máximo es 2100.?
meta title y meta descripcion (4)
Obtuve este mismo error al utilizar una consulta LINQ to SQL aparentemente inocente. Solo quería recuperar todos los registros cuyos identificadores se encontraban entre los almacenados en una matriz:
dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();
Resultó que la matriz de identificadores tenía más de 2100 elementos, y parece que el DataContext agrega un parámetro para cada elemento de la matriz en la consulta SQL resultante.
Al final fue un error en mi código, ya que la matriz de ids no tenía tantos elementos. Pero de todos modos vale la pena tener en cuenta que se necesita una validación adicional cuando se utilizan tales construcciones en LINQ to SQL.
Una consulta de búsqueda devolvió este error. Tengo la sensación de que es porque la cláusula in es enorme en un objeto subordinado, cuando estoy intentando ORM el otro objeto.
Al parecer, en las cláusulas no se debe construir 1 parámetro a la vez. Gracias ibatis.
Puedes hacer algunas cosas:
- Introduzca los parámetros en una tabla temporal y use dicha tabla temporal para filtrar su consulta. Consulte https://.com/a/9947259/37055
- Cree una matriz delimitada por comas y pase la matriz a SQL Server como varchar (x). Divídalo a través de TSQL ( aquí hay algunos métodos ) y use el conjunto de filas resultante para filtrar los resultados de su búsqueda.
- Echa un vistazo a la lógica de tu aplicación. Es más que un poco extraño pasar 2100 parámetros a un procedimiento almacenado.
Si está pasando 2100 parámetros a un solo procedimiento almacenado, simplemente está haciendo algo mal. No subas el límite ni trates de evitar esta abominación, averigua cómo hacer las cosas bien.
Su mejor opción es revisar su aplicación para pasar menos de 2100 parámetros al procedimiento almacenado. Este es un límite de DBMS que no se puede elevar .