Службы 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). Он предупредит вас о возможность усечения, но теперь вы можете использовать данные из второго преобразования.
У меня была аналогичная проблема. У меня было поле SQL, которое изменилось с NVARCHAR(MAX) на NVARCHAR(4000), но дало мне ту же ошибку, которую вы описываете. Невероятно разочаровывает. Я смог исправить это, отключив столбец в назначении OLE DB, который неправильно перечисляет поле как NTEXT. Затем выполните все операции служб SSIS, предшествующие назначению OLE DB, и выберите Показать расширенный редактор...затем нажмите кнопку Обновить. После этого для каждого предыдущего шага я переназначил столбец и SSIS, наконец поднял, что столбец теперь был DT_WSTR.
У меня была такая же проблема, работающая из базы данных ACCESS, поэтому я использовал производный столбец и сделал все необходимые поля (DT_STR, , ) (длина-размер столбца таблицы, а кодовая страница-1252). Это не только работало в ACCESS, но и работало для источника EXCEL.
надеюсь, что это помогает.
Я закончил, используя назначение .NET, но реальная проблема заключалась в том, что столбцы целевой таблицы устарели.
попробуйте обновить их, изменив назначение на другую таблицу, а затем на предыдущую или непосредственно удалив это действие, а затем добавив его обратно с правильными сопоставлениями.