数据类型转换导致 SSIS 包出错

Data Type Conversion causing error in SSIS Package

我有一个 SSIS 程序包,其中包含一个使用执行 SQL 任务创建临时 table 的步骤。

在此查询中,我有一个案例语句,类似于:

Cast(Case
    When billing_address is Like '%DONOTUSE%' Then 1
    When billing_address is Like '%DONTUSE%' Then 1 
Else 0
End as nvarchar)DoNotUseAccounts

我在另一个执行 SQL 任务中有一个更新语句是这样的:

Update #StatementAccounts 
Set Issues = Issues + ' - Do Not Use Account' 
Where Product In ('prod1','prod2','prod3','prod4') 
     And DoNotUseCustomer= 1

执行包时我收到错误消息:"Error: String or binary data would be truncated."

我使用了错误的数据类型吗?

Update 语句是否也需要 cast/converted?

任何指导都会有所帮助。

我尝试过使用数据类型 int、numeric,并将更新语句也转换为 int。

您遇到了两个可能的问题之一。

1) 你有一个显式的 CREATE TABLE #StatementAccounts 语句,你将 Issues 定义为 NVARCHAR 没有指定长度,在这种情况下它是一个字符,或者长度是太小,无法容纳您尝试在 UPDATE 语句中附加的其他字符。

修复:使声明至少长 len( ' - Do Not Use Account') 个字符。

2) 从事物的声音来看,您更有可能使用 SELECT...INTO #StatementAccounts 语句并让 SQL 服务器为您定义数据类型。在这种情况下,它将 Issues 设置为刚好足以容纳该初始语句中的最大值。

FIX:发出明确的 CREATE TABLE #StatementAccounts 语句并声明适当大小的数据类型,然后将 SELECT...INTO 更改为 INSERT INTO