错误:分配给变量“ User ::”的值(DBNull)的类型与当前变量类型(String)不同

Tom*_*Tom 5 sql sql-server ssis

我正在创建一个SSIS包,并在提取数据时收到以下错误。

错误:分配给变量“ User :: dunsId”的值(DBNull)的类型与当前变量类型(字符串)不同。变量在执行期间可能不会更改类型。变量类型是严格的,但对象类型的变量除外。

dunsId在源表中是varchar(150),该表是可为空的列,并且包含Null值。我在SSIS中创建的用于映射它的变量是string类型。我基本上是试图提取他所有的记录,并将其插入到包含dunsId列的目标表中,该表为varchar(150)

这是我的插入查询

INSERT INTO Parties (companyId, dunsId, companyName, companyTypeId,companyTypeName,companyStatusTypeId,companyStatusTypeName,simpleIndustryId,simpleIndustryDescription)  
values (companyId, dunsId, companyName, companyTypeId, companyTypeName,companyStatusTypeId,companyStatusTypeName,simpleIndustryId,simpleIndustryDescription)
Run Code Online (Sandbox Code Playgroud)

参数映射 在此处输入图片说明

变数

在此处输入图片说明

设计

在此处输入图片说明

LON*_*ONG 10

解决您的问题的几种方法:

  1. 最简单的方法是将数据类型从 更改stringobject
  2. 从第一个开始Execute SQL task,将ISNULL问题列放在周围,这将确保输出是string
  3. 使用一些替代方法,例如 load from Sourceto DestinationinDataFlow task或使用Execute SQL taskwithINSERT INTO target_table SELECT...FROM Source_table语句

更新

正如您所提到的,您正在使用 输出列stored procedure,那么您可以使用语句INSERT INTO target_table EXEC your_usp而不是3上面的方法