У меня есть задача перенести столбец типа изображения из sql 2000 в тип varbinary в sql 2008.
Исходный столбец имеет максимальный размер данных для столбца 3812353. Пакет всегда выдает следующее сообщение об ошибке.
[Источник OLE DB [13177]] Ошибка: не удалось получить длинные данные для столбца «attch_file_content_t».
[Источник OLE DB [13177]] Ошибка: произошла ошибка с выходным столбцом «attch_file_content_t» (13209) на выходе «Выход источника OLE DB» (13187). Возвращенный статус столбца: «DBSTATUS_UNAVAILABLE».
[Источник OLE DB [13177]] Ошибка: код ошибки SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. «Выходной столбец« attch_file_content_t »(13209)» завершился неудачно, потому что произошла ошибка с кодом 0xC0209071, а расположение строки ошибки в «выходном столбце« attch_file_content_t »(13209)» указывает сбой при ошибке. Произошла ошибка в указанном объекте указанного компонента. Перед этим могут быть опубликованы сообщения об ошибках с дополнительной информацией об ошибке.
В основном это была ошибка соединения.
Мне удалось решить проблему с соединением на одной таблице, но теперь я обнаружил другую проблему на другой таблице.
Первоначальное намерение — перенести исходные данные в промежуточную среду. Источником является sql 2000, у них есть вложение в качестве типа изображения. Затем у нас возникает проблема «Не удалось получить длинные данные для столбца», когда мы просто делаем выбор * из таблицы A
. Затем я пытаюсь выполнить выборку (ImageTypeColumn) как varbinary (8000) из таблицы A. теперь это работает для тех данных, которые не существуют 8000 байт
Но, к сожалению, в другой таблице существуют некоторые строки, длина данных огромна. Таким образом, снова произошел сбой, когда мы выполнили select cast(ImageTypeColumn) as varbinary(8000) из tableA
В Microsoft SQL Server 2000 и более ранних версиях тип данных varbinary имел максимальное ограничение в 8000 байт. Для хранения до 2 ГБ двоичных данных вместо этого необходимо использовать тип данных изображения.