16

SSIS2008R2でプロセスの実行タスクを使用しています。idVarデータ型Int32の変数があります。Argumentsプロセス実行可能ファイルがこの変数を引数として取ることができるように、この変数をタスクのプロパティに渡す必要があります。式を使用してに割り当て@idVarますArguments

これで、システムはIntをStringに変換する必要があると言ったので、式ビルダーで次の式を使用しました

(DT_STR, 10, 1252) @[User::IdVar] 

次のエラーが発生します。

Expression cannot be evaluated.

Additional information:
The expression "(DT_STR, 10, 1252) @[User:IdVar]" has a result type of "DT_STR", 
which cannot be converted to a supported type.

(Microsoft.DataTransformationServices.Controls)

数値を文字列に型キャストする正しい方法は何ですか?

エラー

4

3 に答える 3

39

問題の原因:

Arguments[制御フロー]タブで使用可能な[プロセスタスクの実行]のプロパティは、ではなくデータ型の値を期待しています。DT_WSTRDT_STR

問題と修正を示すSSIS2008R2パッケージ:

Business Intelligence Development Studio(BIDS)2008 R2でSSISパッケージを作成し、という名前を付けSO_13177007.dtsxます。次の情報を使用してパッケージ変数を作成します。

Name   Scope        Data Type  Value
------ ------------ ---------- -----
IdVar  SO_13177007  Int32      123

変数ペイン

プロセス実行タスクを[制御フロー]タブにドラッグアンドドロップし、 [引数の受け渡し]という名前を付けます。

[制御フロー]タブ

[プロセスの実行タスク]をダブルクリックして、を開きますExecute Process Task Editor。[]ページをクリックし、 []プロパティに対して[省略記号]ボタンをクリックして、を表示します。Property Expression Editor

プロセスタスクエディタの実行

プロパティ式エディターで、プロパティを選択し、プロパティに対して省略記号ボタンをArgumentsクリックしてを開きます。Expression Builder

プロパティ式エディター

式ビルダーで、次の式を入力してをクリックしますEvaluate Expression。この式は、変数の整数値IdVarを文字列データ型に変換しようとします。

(DT_STR, 10, 1252) @[User::IdVar]

式ビルダー-DT_STR

[式の評価]をクリックすると、次のエラーメッセージが表示されます。これは、プロセスの実行タスクのArgumentsプロパティがデータ型の値を想定しているためですDT_WSTR

整数からANSI文字列への変換エラー

この問題を修正するには、以下に示すように式を更新して、整数値をデータ型に変換しますDT_WSTR。[式の評価]をクリックすると、[評価値]テキスト領域に値が表示されます。

(DT_WSTR, 10) @[User::IdVar]

式ビルダー-DT_WSTR

参照:

DT_STRデータ型とDT_WSTRSSISの違いを理解するには、MSDNのドキュメントIntegrationServicesデータ型をお読みください。これらの2つの文字列データ型に関するドキュメントからの引用は次のとおりです。

DT_STR

最大長が8000文字のヌル終了ANSI/MBCS文字ストリング。(列の値に追加のnullターミネーターが含まれている場合、文字列は最初のnullの発生時に切り捨てられます。)

DT_WSTR

最大長が4000文字のnullで終了するUnicode文字列。(列の値に追加のnullターミネーターが含まれている場合、文字列は最初のnullの発生時に切り捨てられます。)

于 2012-11-01T12:59:14.377 に答える
4

式: "合計数:" +(DT_WSTR、11)@ [User :: int32Value]

Int32の場合-(-2,147,483,648から2,147,483,647)

于 2018-03-28T07:39:47.977 に答える
0

式: "合計数:" +(DT_WSTR、5)@ [User :: Cnt]

于 2017-05-16T14:59:36.980 に答える