4

式と制約を評価する優先順位制約を持つdtsxパッケージがあります。制約は「success」で、式は「@myVariable」== 3です。myVariableはint32であり、Visual StudioのデザインGUIで設定すると、パッケージは正常に実行されます。値が1または2であることを確認する他の2つのパスがあります。

ただし、コマンドラインからパッケージを実行して変数の値を渡そうとすると、式がブール値に評価されないと主張してエラーが発生します。

指示:

dtexec /F "c:myPackage.dtsx" /SET 
\Package.Variables[User::myVariable].Properties[Value];3

エラー:

The expression "@myVariable == 1" must evaluate to True or False.  
Change the expression to evaluate to a Boolean value.

これがGUIから正常に実行され、Microsoftのドキュメントが==(直感的に)ブール値を返すと主張しているという事実は、私を非常に混乱させています。私はまた、運が悪かったので、私のコマンドで3つを二重引用符で囲んでみましたが、今はアイデアがありません。

誰かが何が起こっているのか考えていますか?

4

5 に答える 5

3

このスレッドに戻るのに時間がかかってすみません!しかし(DT_I4)@[User::myVariable] == 3、トリックをしました。ありがとう!

于 2008-10-21T13:50:44.090 に答える
2

これは間違いなくdtexecのバグです-同様の問題(dtexecコマンドラインの/ setコマンドを介して整数値を設定する)があり、パッケージの実行で(出力)変数がストアドから返されるときに間違ったタイプであるとさらに不平を言いました手順。

その値のセットを省略すると(とにかくゼロに設定されていました)、パッケージ実行エラーが修正されました。本当に値が必要な場合はどうすればよいかわかりません。入力パラメーターとしては正常に機能しているようです。出力パラメーターとして使用する場合は、文字列ではなく、失敗するだけです。

于 2009-05-22T05:45:58.813 に答える
1

問題が発生するかどうかはわかりませんが、変数値を設定するために少し奇妙な構文を使用しています。試してみてください

dtexec ... /SET \Package.Variables[User::myVariable].Value;3

.Valueの代わりに を使用していることに注意してください.Properties[Value].ValueBooks Online が推奨する公式の方法です。構文.Properties[Value]もたまたま機能する可能性がありますが、変数の型が変更されます。

于 2008-10-12T07:16:22.923 に答える
0

コマンドライン経由で渡された値が構成変数の型に自動的にキャストされないため、ssis のバグのようです。SSIS は、cmd ライン経由で渡された値を文字列として扱うようで、実行時に問題が発生します。変数を文字列に変更して比較するか、(DT_I4) を使用して式にキャストします。

于 2009-01-06T22:07:27.920 に答える
0

これは、dtexec.exe の初期リリースのバグのようです。私の開発環境には、SQL Server 2005 SP2 のようなバージョン 9.00.3042.00 がインストールされています。バージョン 9.00.1399.06 の 2 つ目のテスト マシンがあります。この失敗が見られる唯一の場所は、テスト ボックスです。私の開発者。ボックスは完了するまで実行されます。式の一部であるブール変数に明示的な型変換 (DT_BOOL) を追加すると、エラーはなくなりました。

また、上記の .Value コメントは正しくありません。これは .Properties[Value] であるはずです。変数の Value は単にグローバル変数プロパティ コレクション内の項目だからです。これは C# や VB.net の構文ではありません。これは SSIS 構文です。

于 2008-12-23T03:04:24.910 に答える