我正在创建 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
Execute SQL task
开始,将ISNULL
放在问题列周围,这将确保输出是string
Source
中从 Destination
加载到 DataFlow task
或使用一种 Execute SQL task
与 INSERT INTO target_table SELECT...FROM Source_table
语句更新
正如您所提到的,您使用
stored procedure
输出列,那么您可以使用语句 INSERT INTO target_table EXEC your_usp
而不是上面的方法 3
我必须将结果转换为 VARCHAR(300),结果才能开始工作。
例如:
原文:
Select
MyId
MyName
From
MyTable
修复:
Select
MyId
CAST(MyName as AS NVARCHAR(300)) AS MyName
From
MyTable
dunsId
变量的变量类型是STRING,并且您尝试在运行时为此变量NULL
分配值,即您的查询返回NULL
列dunsId
,该列不支持变量类型字符串,请将其声明为输入Object
。