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