1

http://msdn.microsoft.com/en-us/library/bb895315.aspxの手順に従って、増分ロードを実装します。step1 の最後に従って、SSDT で文字列変数を宣言し、文字列を SqlString='select * from CustomizedFunction(Argument1,Argument2,Argument3)' として割り当てます。 .

ただし、SqlString がデータ フローの OLEDB データ ソースでアクセスされる場合。エラー発生

Hresult: 0xC0202009 ERROR at Data Flow Task-LoadData[OLEDB Source[1]]:SSIS エラー コード DTS_E_OLEEBERROR。OLEDB エラーが発生しました。エラー コード: 0x80040E0C。OLEDB レコードが利用可能です。ソース:"Microsoft SQL Server Native Client11.0" HResult:0x80040E0C 説明:"コマンド オブジェクトにコマンド テキストが設定されていません。"

4

3 に答える 3

0

SSIS OLE DB ソースが機能するには、最初の列定義が必要です。「変数からの SQL コマンド」を使用する場合、この列定義を提供する必要があります。

概念の一般的な適用から始めましょう。次に、特定のシナリオに対処します。

一般的なケース

場合によっては、初期値を持たない文字列変数があり、プロセスのある時点で値が割り当てられることがあります。このシナリオでは、初期値を提供する必要があります。これを行う 1 つの方法は、列とデータ型を提供するダミー クエリを使用することです。

たとえば、変数の初期値を次のように設定します。

SELECT CAST('' AS VARCHAR(10) AS MyColumn1, 0 AS MyInteger FROM MyTable WHERE 1= 2

このクエリは結果を返しませんが、OLE DB ソースが必要とする列定義を提供します。OLE DB ソースが実行される前のある時点で、実際のクエリを変数に割り当てる必要があります。

特定のケース

あなたのケースは似ていますが、少し異なります。特定のケースでは、次のクエリがあります。

SqlString='select * from CustomizedFunction(Argument1,Argument2,Argument3)'

OLE DB Source は、列の定義が何であるかを認識していませんSELECT *SELECT *実際の列名とそのデータ型に置き換える必要があります。

SqlString='SELECT CAST(MyColumn1 AS VARCHAR(10)) AS MyColumn1, CAST(MyColumn2 AS INT) AS MyColumn2 FROM CustomizedFunction(Argument1,Argument2,Argument3)'
于 2016-04-14T17:31:59.820 に答える