2013-03-12 4 views
1

У нас есть преобразование Lookup, которое выполняет поиск по дате. Тип данных столбца ввода - DT_DBDATE, а также соответствующий столбец поиска. Оба являются типами данных DATE в SQL Server 2012. Это пакет SSIS 2012.SSIS Lookup Transform Fails on Date Column

Поиск работает отлично в BIDS (дизайнере). При развертывании и запустить через SSISDB UI или через наш пользовательский sproc, этот поиск неудачно со следующей ошибкой:

Error: Lookup Status Key.Inputs[Lookup Input].Columns[status_dt] and reference column named "status_dt" have incompatible data types.

Мы также видим предупреждение синхронизации вокруг все наше DATE колонн, те эти предупреждения не приводят в отказ.

Сказал ли кто-нибудь еще такое поведение?

ОБНОВЛЕНИЕ: Обходной путь заключается в том, чтобы отнести столбцы к DATETIME (DT_DBTIMESTAMP в SSIS) или изменить базовые столбцы на DATETIME. Оба обойти эту проблему. Оба раздражают.

Я предполагаю, что источником проблемы является поставщик OLE DB. Вероятно, ограниченная или слабоватая поддержка даты только типа данных.

+0

Ваша догадка правильная. Использование OLEDB и простой 'DATE' всегда приведет к предупреждению о том, что вы должны обновлять свои метаданные. Я уже зарегистрировал это в Microsoft Connect несколько лет назад. –

+0

В OLE DB нет встроенной поддержки дат только даты. Значение передается в STR или WSTR. Не указывая поставщика в строке подключения, поведение по умолчанию должно быть проблематичным. – Stuart

ответ

2

У меня есть ответ. Проблема заключалась в том, что я не указал поставщика в строке подключения. Когда я добавил Provider = SQLNCLI11.1;, проблема была решена.