#sql #json #ssis #buffer #script-component
#sql #json #ssis #буфер #скрипт-компонент
Вопрос:
Я передаю столбец данных Json компоненту сценария для обработки. Все шло нормально, пока у меня не появились данные Json, длина которых превышает 600 000, затем возникает следующая ошибка.
Я изменил размер maxBuffer на 10 МБ, и мои данные составляют всего около 600 КБ, но это все равно не работает, пожалуйста, посоветуйте.
Ответ №1:
Есть несколько вещей, которые вам нужно проверить —
Если вы используете строку, назначенную выходному столбцу, перейдите к свойству выходного столбца и установите для его длины большее значение. Установите размер строки в выходном столбце больше, чем размер исходной строки. Также сравните размеры входных и выходных столбцов задачи сценария ( щелкните правой кнопкой мыши -> показать расширенный редактор… ) и найдите входные столбцы, которые больше выходных столбцов. Обратите внимание на размер столбца в разделе Outputs компонента Script.
Если у вас есть родительско-дочерние пакеты, обратите внимание, что буферы конвейера не являются общими для дочерних и родительских пакетов, поэтому вам необходимо соответствующим образом настроить свойства.
Чтобы проверить, где происходит усечение, попробуйте реализовать исключение DoesNotFitBufferException .
Если вы используете SQL Server 2005, то стоит обратить внимание на этот поток.
Комментарии:
1. Спасибо за ответ.
2. Я использую асинхронный ввод / вывод, и сценарий предназначен для десериализации данных Json, поэтому я не думаю, что выходные столбцы имеют к этому какое-то отношение. И я только что протестировал, он обработал 160 тыс. символов данных Json нормально, но не удалось с 190 тыс. символов Json.
3. Этот ответ помог мне определить мою проблему. Действительно, выходной столбец был ограничен меньшим количеством символов, чем ему было присвоено. Спасибо!
4. Спасибо, что указали длину выходного столбца! После настройки длины нескольких столбцов ошибка исчезла, и выполнение пакета было успешно завершено.