4

我有一个 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,所以不应该是这种情况。

谢谢!

4

1 回答 1

2

您需要刷新列的大小:

  1. 用右键按下OLE DB Source -> Show Advanced Editor
  2. 选择Input and Output Properties标签 -> Ole DB Source Output->Output Columns
  3. 在右侧面板Length行中插入您的新尺寸。
  4. OK

显示高级编辑器

OLE DB Source或者您可以从、删除OLE DB Source、插入新OLE DB Source和粘贴查询中复制您的查询。这将自动刷新您的列。

请记住,Dataflow 中可能还有更多元素需要编辑列的长度,例如Data Converion...

于 2013-07-03T06:47:45.043 回答