我正在创建 SSIS 包,但在提取数据时出现以下错误。
错误:分配给变量“User::dunsId”的值 (DBNull) 类型与当前变量类型 (String) 不同。变量在执行期间不能改变类型。变量类型是严格的,但 Object 类型的变量除外。
dunsId 是源表中的 varchar(150),它是可为空列并包含 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)
变量
设计
最佳答案
解决您的问题的几种方法:
- 最简单的方法是将数据类型从
string
更改为object
- 从第一个
执行 SQL 任务
开始,将ISNULL
放在问题列周围,这将确保输出为字符串
- 使用一些替代方法,例如在
DataFlow 任务
中从源
加载到目标
或使用一个执行 SQL 任务
使用INSERT INTO target_table SELECT...FROM Source_table
语句
更新
正如您所提到的,您使用存储过程
输出列,然后您可以使用语句INSERT INTO target_table EXEC your_usp
而不是方法3
> 以上
关于sql - 错误:分配给变量“User::的值 (DBNull) 的类型与当前变量类型 (String) 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079864/