我有一个 SQL Server 2005 SP2 数据库,它有一个poc_resp_city
属性为nvarchar(35)
.
它被更改为nvarchar(80)
2 个月前,没有对齐数据仓库中的相同属性。(仍然有nvarchar(35)
)
SSIS 数据加载包(在正常工作两个月后)现在每次运行时都会返回包失败,并出现以下错误:
输出“OLE DB 源输出”(11) 上的输出列“poc_resp_city”(2250) 出现错误。返回的列状态为:“文本被截断或一个或多个字符在目标代码页中不匹配。”。输出“OLE DB 源输出”(11) 上的输出列“poc_resp_city”(2250) 出现错误。返回的列状态为:“文本被截断或一个或多个字符在目标代码页中不匹配。”。
SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“源表”(1) 上的 PrimeOutput 方法返回错误代码 0xC020902A。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
软件包和数据库均未针对此问题进行修改。我知道我可以忽略这个错误,或者我可以做出安排以确保它正常工作,但我想提供一个正确且可接受的答案,为什么这个错误会在修改后 2 个月出现?因为也许我错过了在这种情况下的重要一步。
重要提示:我什至没有超过 35 个字符的单条记录,因此不会发生截断。(此警告属于某种 SSIS 验证步骤)
现在我认为可能在一段时间后,SSIS 包会重新编译自己,现在它在其元数据中看到了这种错位(35 =/= 80),并且因为TruncationRowDisposition
属性设置为RD_FailComponent
,它使组件失败。
而且我会排除代码页选项,因为每个数据库列都是nvarchar
,不是varchar
,所以不应该是这种情况。
谢谢!