SSIS 2008 の ado net データセットにストアド プロシージャを設定しています。結果セットには 21 列が含まれます。SSIS で For Each ループを使用する場合、最初の 2 つの列が必要な場合、20 番目の列ではインデックス 0、1、19 を使用できないようです。インデックス 19 を使用したいのですが、必要なフィールドだけを使用する方法はありますか?
前もって感謝します。
正常に動作します。何に遭遇しているのかわかりません。
Foreach ループ コンテナーにフィードする 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;
rsResults
その完全な結果セットをObject 型の SSIS 変数にプッシュします。
Foreach ループ コンテナー内で、変数とを序数位置 0、1、および 19にマップしますCol00
。Col01
Col19
Visual Studio の無料アドオンであるBIDS Helperをお持ちの場合は、数回クリックするだけで私のソリューションを再作成できます。Biml はビジネス インテリジェンス マークアップ言語であり、BI のオペレーティング システムと考えてください。ここでは、XML を使用して、必要な 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>