Работает нормально, я не уверен, с чем вы столкнулись.
Я создал базовый пакет с задачей «Выполнение SQL», загружаемой в контейнер цикла по каждому элементу.
Мой исходный запрос уродлив, но он удовлетворяет мою лень
SELECT
*
FROM
(
SELECT TOP 21
CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS int) AS rn
FROM
sys.all_columns AS AC
) D
PIVOT
(
max(rn)
FOR rn IN ([1]
, [2]
, [3]
, [4]
, [5]
, [6]
, [7]
, [8]
, [9]
, [10]
, [11]
, [12]
, [13]
, [14]
, [15]
, [16]
, [17]
, [18]
, [19]
, [20]
, [21]
)
) P;
Я помещаю этот полный набор результатов в переменную SSIS с именем rsResults
типа Object.
В моем контейнере цикла по каждому элементу я сопоставляю переменные Col00
, Col01
и Col19
с порядковыми позициями 0, 1 и 19.
Бимл все вещи
Если у вас есть бесплатное дополнение к Visual Studio, BIDS Helper, вы можете воссоздать мое решение несколькими щелчками мыши. Biml — это язык разметки бизнес-аналитики, думайте о нем как об операционной системе для BI. Здесь мы будем использовать некоторый XML для описания пакета SSIS, который нам нужен.
- Добавьте новый файл .biml в свой проект SSIS.
- Исправьте третью строку, чтобы она указывала на действующую базу данных.
- Щелкните правой кнопкой мыши файл biml и выберите «Создать пакет SSIS».
- Выгода
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<!-- UPDATE ME -->
<OleDbConnection Name="CM_OLE" ConnectionString="Data Source=localhost\dev2014;Initial Catalog=tempdb;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;" />
</Connections>
<Packages>
<Package ConstraintMode="Linear" Name="so_29220275">
<Variables>
<Variable DataType="Object" Name="rsResults" />
<Variable DataType="Int32" Name="Col00">-1</Variable>
<Variable DataType="Int32" Name="Col01">-1</Variable>
<Variable DataType="Int32" Name="Col19">-1</Variable>
<Variable DataType="String" Name="QuerySource"><![CDATA[SELECT
*
FROM
(
SELECT TOP 21
CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS int) AS rn
FROM
sys.all_columns AS AC
) D
PIVOT
(
max(rn)
FOR rn IN ([1]
, [2]
, [3]
, [4]
, [5]
, [6]
, [7]
, [8]
, [9]
, [10]
, [11]
, [12]
, [13]
, [14]
, [15]
, [16]
, [17]
, [18]
, [19]
, [20]
, [21]
)
) P;
]]></Variable>
</Variables>
<Tasks>
<ExecuteSQL ConnectionName="CM_OLE" Name="SQL - gen data" ResultSet="Full">
<VariableInput VariableName="User.QuerySource" />
<Results>
<Result VariableName="User.rsResults" Name="0"></Result>
</Results>
</ExecuteSQL>
<ForEachAdoLoop SourceVariableName="User.rsResults" ConstraintMode="Linear" Name="FELC 3 of 20">
<VariableMappings>
<VariableMapping VariableName="User.Col00" Name="0" />
<VariableMapping VariableName="User.Col01" Name="1" />
<VariableMapping VariableName="User.Col19" Name="19" />
</VariableMappings>
<Tasks>
<ExecuteSQL ConnectionName="CM_OLE" Name="SQL - do nothing">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
</Tasks>
</ForEachAdoLoop>
</Tasks>
</Package>
</Packages>
</Biml>
person
billinkc
schedule
23.03.2015