2014-12-03 3 views
0

У меня есть следующие задачи в моем SQL Server 2012 пакета:SQL Server 2012 SSIS - Создание температуры выпуск таблицы

  1. Execute SQL Task для создания локальной временной таблицы (мне нужно использовать локальную временную таблицу, как я буду сбрасывать одни и те же параллельные пакеты)
  2. Задача потока данных: экспортировать из таблицы SQL Server в локальную таблицу темп, созданную на шаге 1. У меня есть параметр RatainSameConnection = TRUE для источников данных и DelayValidation для обеих задач в true.

После того, как я бегу пакет, я получаю эту ошибку:

The metadata could not be determined because statement 
select * from #tmptable uses a temp table. 

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

+0

Есть ли у вас задержки на соединение с данными? –

+0

Должен ли быть временный? может ли он быть постоянным? Вы ожидаете, что несколько сеансов будут использовать его одновременно (т. Е. Ваш пакет работает параллельно в нескольких заданиях) –

+0

Я не могу использовать постоянные таблицы, поскольку одновременные запущенные пакеты испортили данные. – Abiete

ответ

0

Перейдите в свойства и установите ValidateExternalMetadata в False, чтобы он не пытался проверять метаданные.

Если это не решает проблему, то,

Использование global temporary table(##someTable) вместо local temp table(#someTable). поэтому вы можете создать эту глобальную таблицу temp с помощью SSMS, а затем, когда вы используете ее в SSIS, она не будет жаловаться на метаданные.

Update:

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

От SSIS menu в ЗАЯВОК, выберите режим Work Offline, а затем измените Global temp table to Local temp Table. обязательно сделайте это с Property window или лучше используйте variable для хранения текста sqlCommand, иначе SSIS снова будет жаловаться на внешние метаданные.

+0

Я изменил ValidateExternalMetadatabut, это не поможет. Как я упоминал в исходном сообщении, я не могу использовать глобальную таблицу temp из-за параллелизма запуска пакета SSIS. – Abiete

1

Я просто имел такую ​​же проблему и нашел решение создать фальшивый набор данных в запросе, прежде чем фактическое ВЫБРАТЬ о том, что ЗЕЬЕСТЕ • статических данных, в том же формате.

SET FMTONLY ON 
select 0 as a, 1 as b, 'test' as C, GETDATE() as D 
SET FMTONLY OFF 

--now put the real query 
select a, b, c, d from ##TempTable 

См Kyle Hale «s ответ - SSIS Package not wanting to fetch metadata of temporary table

0

Вообще я заменить временную таблицу с КТР или табличной переменной.

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