2013-03-05 3 views
2

Я запускаю SQL/BIDS 2005 (текущая среда PROD).SSIS Как передать путь XSD из переменной

Я пытаюсь сделать некоторые основные ДОУ и задача достаточно тривиальна:

  • Получить файл XML с жесткого диска
  • Есть некоторое отображение
  • Обновление БД с результатами

шаги я взял:

  • Создать новый пакет
  • Добавить данные Flow Task
  • Добавить задачу исходного XML в потоке данных

Это все работает прекрасно, когда я предоставить XML и XSD расположение в свойствах источника XML.

Я могу видеть все поля XML отлично, так что я могу продолжить с отображением и т.д.

выше, очевидно, не является приемлемым, и что мне нужно сделать, это пройти как XML и XSD значения из переменных (и позже сформируйте файл конфигурации).

Итак, я перешел к выражениям потока данных и указал на переменные XML и XSD (я оценил результаты, и это было идеально).

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

Компонента обнаружило потенциальное повреждение метаданных в процессе проверки. Затем он дает стек со ссылкой объекта Nopt набора на экземпляр ... начиная с (оберткой IDTSManagedComponentWrapper90) Dts.Pipeline.ManagedComponentHostValidate

Как я упоминал, что я проверить XML-документ и схему и ее хорошо отформатирован. При передаче данных непосредственно в xml-источнике это работает. Это не работает, когда я пытаюсь передать эти значения с уровня потока данных (в виде выражений).

ответ

1

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

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

Да, вы можете использовать переменную в большинстве мест. Вы должны искать свойство «выражение». Это не всегда очевидно. Вот где вы говорите, чтобы использовать эту переменную. Когда вы это сделаете в BIDS, он будет использовать любую переменную, установленную в вашей среде разработки, и она установит свойство text, чтобы отразить эту переменную. Это временно. Позже, во время выполнения, он фактически использует переменную, которую вы даете ей во время выполнения. Но во время разработки ваша переменная должна фактически указывать на, например, действительный файл с правильной структурой.В противном случае вы не сможете создать свой поток данных. Именно так работает SSIS. Это не было изменено в более поздних версиях.

P.S., я просто добавил более подробную информацию к related question here.

Если вы «отредактируете» диспетчер подключений, он покажет вам окно редактирования. Это не тот, который вы хотите. Посмотрите на окно свойств, которое - это место, где вы найдете запись «Выражения», перед пустой коробкой .

Нажмите на пустую коробку, и на ней будет показана кнопка с тремя точками . Нажмите на эту кнопку. Это вытащит «Property Expression Editor». Существует раскрывающийся список с такими свойствами, как «ConnectionString» слева. Справа есть кнопка «ДРУГОЕ» с тремя точками. Нажмите на эту кнопку, чтобы вытащить «Builder Expression». Если вы указали любые переменные, вы найдете их в верхнем левом углу , например, в качестве User :: VariableName, и затем вы можете перетащить их в поле «Выражение», где они будут отображаться как @ [Пользователь :: VariableName]. Не очевидно, но выполнимо.

+0

Спасибо за ответ ... мне удалось это работать: 1) Я бегу 32-разрядной Win7, так что я пошел в свойствах пакета и опции отключены Run64BitRuntime (значение ИСТИНА по умолчанию) в раздел Отладка диспетчера конфигурации решения 2) Затем я повторно применил задачу источника XML и перенастроил выражения на уровне потока данных. Пошел в задачу источника XML, обновил ее и ... BINGO! Спасибо за вашу помощь. – tom33pr

+0

Интересно - мне нужно будет помнить Run64BitRuntime. Наверное, меня сбило с толку ссылкой на «метаданные». Я рад, что ты заработал! – criticalfix

Смежные вопросы