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

标签 sql sql-server ssis

我正在创建 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)

参数映射 enter image description here

变量

enter image description here

设计

enter image description here

最佳答案

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

  1. 最简单的方法是将数据类型从string更改为object
  2. 从第一个执行 SQL 任务开始,将 ISNULL 放在问题列周围,这将确保输出为字符串
  3. 使用一些替代方法,例如在 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/

相关文章:

MySQL 对多个 OR 使用索引,但对 IN 没有索引而且速度慢得多

sql-server - 在 SQL Server 2000 中为两个不同的表选择两列

sql-server - SSIS 如何加载具有多行的单个成员。

sql - 值在 SQL Server Management Studio 中显示为四舍五入但在提取时不是

sql-server - SQL Server 2008 - 使用命令行创建数据库脚本(架构+数据)

hadoop - 到 hadoop 还是不到 hadoop

c# - SSIS - 搜索字符串 - 脚本任务

mysql - dll MATLAB,dll DBMS,blob?

sql - 在 SQL 中连接多个表

mysql - JOIN 用于无法装入内存的大型 mysql 数据库。