web-dev-qa-db-ja.com

エラー:変数 "User ::に割り当てられている値(DBNull)のタイプが現在の変数タイプ(String)と異なります

SSISパッケージを作成していますが、データの抽出中に次のエラーが発生します。

エラー:変数 "User :: dunsId"に割り当てられている値のタイプ(DBNull)が現在の変数のタイプ(String)と異なります。変数は実行中にタイプを変更することはできません。変数型は、Object型の変数を除き、厳密です。

dunsIdはソーステーブルのvarchar(150)であり、null可能列であり、null値が含まれています。マッピングするためにSSISで作成した変数は文字列型です。私は基本的に彼のすべてのレコードを抽出し、それを列dunsId is varchar(150)を含む宛先テーブルに挿入しようとしています

これが私の挿入クエリです

INSERT INTO Parties (companyId, dunsId, companyName, companyTypeId,companyTypeName,companyStatusTypeId,companyStatusTypeName,simpleIndustryId,simpleIndustryDescription)  
values (companyId, dunsId, companyName, companyTypeId, companyTypeName,companyStatusTypeId,companyStatusTypeName,simpleIndustryId,simpleIndustryDescription)

パラメータマッピング enter image description here

変数

enter image description here

設計

enter image description here

5
Tom

あなたの問題を解決するいくつかの方法:

  1. 最も簡単な方法は、データ型をstringからobjectに変更することです
  2. 最初のExecute SQL taskから、ISNULLを課題列の周りに置きます。これにより、出力がstringになります。
  3. DataFlow taskSourceからDestinationへのロードなどの代替方法を使用するか、Execute SQL taskステートメントでINSERT INTO target_table SELECT...FROM Source_tableを1つ使用します

[〜#〜]更新[〜#〜]

あなたが言及したように、あなたはstored procedureを使用して列を出力しているので、上のメソッドINSERT INTO target_table EXEC your_uspの代わりにステートメント3を利用することができます

3
LONG

dunsId変数の変数タイプはSTRINGで、実行時にこの変数NULLに値を割り当てようとしています。つまり、クエリは列NULLに対してdunsIdを返します変数タイプの文字列はサポートされていません。タイプObjectとして宣言してください。

enter image description here

0