2010-05-04 3 views
0

В одном из SQL Task можно создать таблицу переменныхТаблица переменных в SSIS

DELCARE @TableVar TABLE (...) 

Затем в другой SQL Task или DataSource назначения и выбрать или вставить в табличную переменную?

Другой вариант, который я рассмотрел, - это использование таблицы темпа.

CREATE TABLE #TempTable (...) 

Я бы предпочел использовать Табличную переменную, чтобы она оставалась в памяти. Но можно использовать временную таблицу, если невозможно использовать переменную таблицы. Кроме того, я не могу использовать назначение набора записей, поскольку мне нужно предварительно выполнить прямые SQL-задачи.

Вариант использования, который пытается решить, в основном выполняет преобразование вместо BizTalk. Существует очень большой плоский файл для преобразования плоского файла, который BizTalk должен преобразовать, к сожалению, объем данных приведет к неприемлемой нагрузке на сервер BizTalk, поэтому идея состоит в том, чтобы отключить его до SSIS. Тем не менее, это не простая строка для преобразования строк, существуют разные типы строк, которые имеют отношения друг к другу. Первая задача в SSIS состоит в том, чтобы загрузить строку в соответствующие (temp) таблицы, а затем во вторую задачу данных выбор выполняется с правильным форматом вывода.

+0

Что вы спрашиваете? –

+0

Невозможно использовать переменные таблицы из SSIS, я спрашиваю, возможно ли это, и если да, то как это сделать. – aceinthehole

ответ

0

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

+0

Я боюсь, что сразу несколько экземпляров этого пакета SSIS могут быть запущены. – aceinthehole

+0

И каждый экземпляр имеет свою собственную таблицу #temp. – HLGEM

+0

Вы правы. Я обнаружил, что сохранить те же соединения для моих целей, вызывая значительные проблемы с производительностью. Мне нужно использовать таблицы Global Temp ##. – aceinthehole

1

Вы можете использовать некоторые из методов, в этом посте: http://consultingblogs.emc.com/jamiethomson/archive/2006/11/19/SSIS_3A00_-Using-temporary-tables.aspx
особенно те, об использовании RetainSameConnection = TRUE на менеджере соединений.
Мне было бы интересно увидеть больше информации о том, какой у вас вариант использования, который требует, чтобы вы выписывали данные в таблицу temp или таблицу, перед дальнейшей обработкой SSIS. Не могли бы вы позаботиться обо всех требуемых SQL-шагах в исходном запросе, прежде чем начать обработку потока данных с помощью SSIS?

+1

Или с выполнением задач SQL после? Если несколько пакетов/экземпляров могут запускать один и тот же процесс одновременно, temp-таблицы будут в порядке. Но закрыть дверь по исходному вопросу - НЕТ - вы не можете использовать табличные переменные в SSIS. –

+0

Thanks Todd, Честно говоря, я не пробовал, я просто предположил, что если бы вы могли, ему нужно было следовать тем же обходным решениям, которые нужны временным таблицам. Я пытался указать @ в целом на то, чтобы лучше определить вопрос, чтобы мы могли помочь решить реальную проблему, а не использовать временные методы временного стола. –

1

Переменные таблицы не хранятся исключительно в памяти и могут быть записаны на диск под давлением памяти. Я стараюсь использовать табличные переменные для очень небольших поисков. Если вам нужно нажимать таблицу на SQL Server из-за необходимых и сложных преобразований, тогда используйте «постоянную» таблицу temp, которая усекается в пакете SSIS до вставки. Простой и получите то, что вам нужно.

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