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



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

在此查询中,我有一个 case 语句

,如下所示:
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

执行包时,我收到错误:"错误:字符串或二进制数据将被截断。

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

更新语句也需要强制转换/转换吗?

任何指导都会有所帮助。

我也尝试使用数据类型 int、numeric 和 Cast update 语句作为 int。

您在这里遇到以下两个可能的问题之一。

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

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

2(从声音上看,更有可能的是,您正在使用SELECT...INTO #StatementAccounts语句并让SQL Server为您定义数据类型。在这种情况下,它将Issues设置为足够大,以容纳该初始语句中的最大值。

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

相关内容

  • 没有找到相关文章