Ответ 1
Лучше всего пересмотреть свое приложение, чтобы передать хранимую процедуру менее 2100 параметров. Это предел СУБД, который не может быть увеличен.
Поисковый запрос возвратил эту ошибку. У меня такое чувство, потому что предложение on является ginormous на подчиненном объекте, когда я пытаюсь ORM другого объекта.
По-видимому, в статьях не должно быть построено по одному параметру за раз. Спасибо ibatis.
Лучше всего пересмотреть свое приложение, чтобы передать хранимую процедуру менее 2100 параметров. Это предел СУБД, который не может быть увеличен.
Я получил эту же ошибку при использовании явно невиновного запроса LINQ to SQL. Я просто хотел получить все записи, идентификаторы которых были среди тех, которые хранятся в массиве:
dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();
Оказалось, что массив ids имеет более 2100 элементов, и кажется, что DataContext добавляет один параметр для каждого элемента массива в результате SQL-запроса.
В конце это было ошибкой в моем коде, так как в массиве ids не было так много элементов. Но в любом случае стоит иметь в виду, что при использовании таких конструкций в LINQ to SQL необходима дополнительная проверка.
Вы можете сделать несколько вещей:
Если вы передаете 2100 параметров одной хранимой процедуре, вы просто делаете что-то неправильно. Не поднимайте лимит или не пытайтесь обойти эту мерзость, выясните, как все правильно.