Я недавно присоединился к команде, в которой они используют сериализацию JSON для передачи массивов параметров в хранимые процедуры SQL Server, где они затем десериализуются и извлекаются необходимые значения, т. Е. Каждая хранимая процедура имеет параметр '@Parameters' типа VARCHAR (MAX).Каркас, создающий и выполняющий команду, написан на C # и использует стандартные типы .NET (SqlCommand, SQlParameter) и т. Д.
Похоже, что когда сериализованный контент имеет большую длину, чем пороговое значение, хранимая процедура невыполняется должным образом, но никаких исключений не возникает.Ничего не происходит.Запуск SQL Profiler Я заметил, что нет попыток выполнить хранимую процедуру в SQL Server.
Например: в одном случае сериализуются только 30 экземпляров типа с не более чем восемью свойствами.Сериализация завершается успешно, и значение присваивается параметру sql в коллекции параметров SqlCommand (имеется только один параметр).Команда выполнена, но ничего не происходит.Если вхождения типа меньше, тогда это будет успешно.Когда это не удается, исключение не вызывается.
Использование: SQL Server 2008 C # .NET 4.0 JSON Сериализация, предоставляемая Newtonsoft.SqlParameter в коде создается как varchar max.Клиент-серверная архитектура - посреднических служб нет.
Кто-нибудь знает об ограничении для сериализованных значений JSON, передаваемых в качестве параметра sql с помощью SqlCommand, или есть идеи относительно того, что может вызывать такое поведение?