Как преодолеть ошибку vs_needsnewmetadata в задаче потока данных? - PullRequest
5 голосов
/ 24 сентября 2008

У меня есть пакет служб SSIS, который копирует данные в таблице с одного SQL Server 2005 на другой SQL Server 2005. Я делаю это с помощью задачи «Поток данных». В файле конфигурации пакета я раскрываю имя таблицы назначения.

Проблема в том, что когда я изменяю имя таблицы назначения в файле конфигурации (через блокнот), я получаю следующую ошибку "vs_needsnewmetadata". Мне кажется, я понимаю проблему ... Отображение столбца таблицы назначения исправлено при первой настройке пакета.

Вопрос: что проще всего сделать с пакетом ssis?

Я читал в Интернете о программной настройке метаданных, но я бы хотел этого избежать. Также я написал консольное приложение на C #, которое прекрасно все делает ... все таблицы и т. Д. Указаны в app.config ... но, видимо, это решение недостаточно хорошо.

Ответы [ 4 ]

6 голосов
/ 27 сентября 2008

Вы установили DelayValidation в False в свойствах пункта назначения источника данных? Если нет, попробуйте это.

Edit: Конечно, это должно быть DelayValidation в True, так что он просто идет вперед и пытается, а не проверяет. Кроме того, вместо изменения вашего пакета в Блокноте, почему бы не поместить имя таблицы в переменную, поместить переменную в выражение в месте назначения, а затем представить переменную в файле конфигурации .DtsConfig? Тогда вы можете изменить это без опасности.

2 голосов
/ 13 декабря 2012

Соответствие исходного столбца назначения с учетом регистра сделало работу за меня.

Как и в моем случае SrNo_prod был столбцом в dev и, используя его, мы разработали dtsx, в то время как он был создан как SrNo_Prod в prod, после изменения регистра с P на p мы получили успех оформление пакета.

1 голос
/ 26 сентября 2008

Проверьте, имеет ли новая таблица назначения те же столбцы, что и старая.

Я полагаю, что ошибка возникает, если столбцы отличаются, и пункт назначения больше не может сопоставить свои входные столбцы со столбцами таблицы. Если две таблицы имеют одинаковую схему, эта ошибка не должна возникать.

0 голосов
/ 24 сентября 2008

Если все, что вы делаете, это копирование данных с одного сервера SQL2005 на другой, я бы просто создал связанный сервер и использовал сохраненный процесс для копирования данных. Пакет служб SSIS является излишним.

Как создать связанный сервер

После создания связанного сервера вы просто запрограммируете что-то вроде ...

INSERT INTO server1.dbo.database1.table1(id,name)
SELECT id, name FROM server2.dbo.database1.table1

Что касается пакета служб SSIS, мне всегда приходилось открывать и перестраивать пакет, чтобы метаданные обновлялись при изменении свойств столбцов таблиц.

...