У нас есть классическое приложение ASP ASP, которое использует ADODB для хранения документа в столбце изображения на SQL Server. Проблема, с которой мы сталкиваемся, заключается в том, что один байт теряется из большинства файлов. У нас есть один экземпляр, где файл не потеряет байта, поэтому я думаю, что это потенциально связанный с размером.Потеря одного байта при хранении данных в SQL Server Столбец изображения
До сих пор у нас есть ..
- проверить, что правильная длина байт передается в ADOdb вызова CreateParameter.
- Используется инструмент BCP SQL Server, чтобы убедиться, что файл поврежден в SQL Server, а не извлечением. Когда мы извлекли файл с помощью BCP, он не имеет байта И мы использовали параметр -w.
Есть ли у кого-нибудь советы о том, что мы могли бы попытаться сделать дальше?
UPDATE:
Мы сделали еще некоторое исследование и он появляется байты исчезают в ADODB. Мы делаем это ..
cmd.Parameters.Append cmd.CreateParameter ("SupportDocImage", adLongVarBinary, adParamInput, lSize, sFilePath)
Где lSize будет 123139 и sFilePath это двоичные данные (да .. плохое именование)
Это фактически отменяет хранимую процедуру и в этой хранимой процедуре мы будем выполнять DATALENGTH (@Variable), и вместо этого получим 123,138.
Также из-за того, что мы видели, это последний байт, который теряется.
Любой конкретный байт? Это последний? – UnhandledExcepSean
Кажется, что это всегда последний байт, но я проверю его с помощью pdf. –
Как выглядит выражение SQL? Попробуйте выбрать длину данных ('select data_length (col)') сразу после вставки, чтобы убедиться, что ничто не приходит позже, чтобы изменить данные. – usr