Службы SSIS: не удается создать метод доступа OLE DB. Убедитесь, что метаданные столбца действительны

У меня есть пакет служб SSIS, который в пункте назначения HES OLEDB имеет поле NVARCHAR(MAX). Это поле даже не заполнено потоком данных. Задача потока данных завершается с ошибкой " не удается создать метод доступа OLE DB. Убедитесь, что метаданные столбца допустимы".

Я видел этот же вопрос: как исправить ошибки работы OLE DB с несколькими шагами в службах SSIS? и изучил мои метаданные под паром, это совет. Я обнаружил, что SSIS сопоставляет оскорбительный столбец как NTEXT а не похож. Я попытался изменить его тип на DT_WSTR с длиной 8000, но все равно получил ту же ошибку. Также попробовал заполнить поле NULL, та же ошибка. Установка" проверить внешние метаданные " на false не имеет никакого значения. Есть предложения, как это исправить?

спасибо.

5 ответов


Я нашел другой (возможно, более быстрый) способ решить эту проблему, но это немного неудобно. Оговоркой о том, что ваши данные могут быть усечены. Будет ли это хорошей идеей использовать его, будет зависеть от того, для чего используются данные.

предполагая, что выход оскорбительного столбца установлен в Unicode text stream [DT_NTEXT]. Добавьте второй шаг преобразования данных после первого, поместите выходы из первого преобразования во второе, и вы можете отобразить из Unicode text stream [DT_NTEXT] до Unicode string [DT_WSTR] (длина=4000). Он предупредит вас о возможность усечения, но теперь вы можете использовать данные из второго преобразования.


только для записей, я закончил использование .NET назначения, где эта ошибка не происходит.


У меня была аналогичная проблема. У меня было поле SQL, которое изменилось с NVARCHAR(MAX) на NVARCHAR(4000), но дало мне ту же ошибку, которую вы описываете. Невероятно разочаровывает. Я смог исправить это, отключив столбец в назначении OLE DB, который неправильно перечисляет поле как NTEXT. Затем выполните все операции служб SSIS, предшествующие назначению OLE DB, и выберите Показать расширенный редактор...затем нажмите кнопку Обновить. После этого для каждого предыдущего шага я переназначил столбец и SSIS, наконец поднял, что столбец теперь был DT_WSTR.


У меня была такая же проблема, работающая из базы данных ACCESS, поэтому я использовал производный столбец и сделал все необходимые поля (DT_STR, , ) (длина-размер столбца таблицы, а кодовая страница-1252). Это не только работало в ACCESS, но и работало для источника EXCEL.

надеюсь, что это помогает.


Я закончил, используя назначение .NET, но реальная проблема заключалась в том, что столбцы целевой таблицы устарели.

попробуйте обновить их, изменив назначение на другую таблицу, а затем на предыдущую или непосредственно удалив это действие, а затем добавив его обратно с правильными сопоставлениями.