VS_NEEDSNEWMETADATA в Visual Studio 2019 / SSIS, читающий столбец отметки времени из PSDQL / ODBC - PullRequest
0 голосов
/ 26 февраля 2020

Я разработчик бизнес-аналитики. Я разрабатываю / поддерживаю решение Microsoft BI в нашей компании (SSIS, SSAS и др. c.). Недавно я обновил свою Visual Studio до 2019 Enterprise (до этого я был на 2015 Enterprise). Расширение Integration Services версии 3.4. (также проверено 3.2). С VS2015 все было хорошо ..

Часть нашего хранилища данных - это данные, поступающие из базы данных PostgreSQL. Я подключаюсь к этому, используя официальный драйвер Postgres ODB C (32Bit, Unicode). Я пробовал версии 10.01 (старая, работала с VS15 без проблем) и 12.01 (текущая).

Проблема заключается в следующем: я открыл пакет, с которым у меня есть проблемы. Он предупреждает меня, что источник данных PSQL -ODB C нуждается в новых метаданных (тем не менее, там ничего не изменилось ..). Я могу запустить (без изменений) пакет без каких-либо проблем! Затем я дважды щелкаю Источник. Появится диалоговое окно, если я хочу исправить метаданные источника в соответствии с БД, на которые он указывает. Тогда предупреждение исчезает. Но если я запустил пакет сейчас, он сразу не сможет сказать, что только что обновленному источнику нужны новые метаданные.

Я отследил проблему до минимального примера. Если я получаю данные из столбца timestamp в PSQL -ODB C -Dasasource, который я всегда получаю, сразу после выполнения пакета, VS_NEEDSNEWMETADATA-Error в Visual Studio (SSIS), и пакет не запускается. На Источнике нет желтого восклицательного знака, как обычно. Все кажется хорошо на время проектирования. Я даже могу просмотреть вывод источника в его свойствах. Если я выберу другой столбец вместо столбца timestamp, то это не проблема. Если я снова выберу столбец timestamp, он снова выдаст ошибку во время выполнения. Я также пробовал разные Postgres серверы с разными версиями как Source и разными ODB C -драйверами.

Если я устанавливаю ValidateExternalMetadat в False на источнике, все работает нормально, но это не может быть решением как он работал безупречно в прошлом.

Похоже, что SSIS-пакеты, созданные с помощью Visual Studio 2019, не могут извлечь столбцы меток времени из PSQL -ODB C -Sources, если включен ValidateExternalMetadata. Я, чокнутый!

Кто-нибудь имел эту проблему и нашел решение?

Привет

Редактировать : Дальнейшее расследование: Похоже, что VS2019 переводит PostgreSQL Отметка времени теперь для dbTimeStamp2 вместо dbTimeStamp (как в 2015 году) в столбцах вывода. Но метаданные, также хранящиеся в пакете - Xml, говорят, что это столбцы dbTimeStamp. Это несоответствие, по-видимому, является основной проблемой, почему пакет сообщает, что метаданные должны быть обновлены!?

1 Ответ

0 голосов
/ 05 марта 2020

ОК, я столкнулся с той же проблемой, и это сводило меня с ума. У меня такая же настройка, и я получаю точно такие же сообщения об ошибках.

К сожалению, у меня нет решения этой проблемы, но, по крайней мере, я могу вам сказать, что это не кажется изолированной проблемой, так как я Это также затронуло.

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

Хотя, спасибо за этот пост. Я помог мне больше не чувствовать себя идиотом. : D

Ура Даниил

...