Подтвердить что ты не робот

Слишком много параметров было предоставлено в этом запросе RPC. Максимум 2100.?

Поисковый запрос возвратил эту ошибку. У меня такое чувство, потому что предложение on является ginormous на подчиненном объекте, когда я пытаюсь ORM другого объекта.

По-видимому, в статьях не должно быть построено по одному параметру за раз. Спасибо ibatis.

4b9b3361

Ответ 2

Я получил эту же ошибку при использовании явно невиновного запроса LINQ to SQL. Я просто хотел получить все записи, идентификаторы которых были среди тех, которые хранятся в массиве:

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

Оказалось, что массив ids имеет более 2100 элементов, и кажется, что DataContext добавляет один параметр для каждого элемента массива в результате SQL-запроса.

В конце это было ошибкой в ​​моем коде, так как в массиве ids не было так много элементов. Но в любом случае стоит иметь в виду, что при использовании таких конструкций в LINQ to SQL необходима дополнительная проверка.

Ответ 3

Вы можете сделать несколько вещей:

  • Настройте параметры во временную таблицу и используйте указанную временную таблицу для фильтрации вашего запроса. См. fooobar.com/questions/7782/...
  • Создайте массив с разделителями-запятыми и передайте массив в SQL Server как varchar (x). Разделите его с помощью TSQL (вот несколько методов) и используйте результирующий набор строк для фильтрации результатов поиска.
  • Посмотрите на свою прикладную логику. Это более чем странно, чтобы передавать 2100 параметров хранимой процедуре.

Ответ 4

Если вы передаете 2100 параметров одной хранимой процедуре, вы просто делаете что-то неправильно. Не поднимайте лимит или не пытайтесь обойти эту мерзость, выясните, как все правильно.