【问题标题】:Package fails only when executed in Execute Package Utility包仅在执行包实用程序中执行时才会失败
【发布时间】:2016-12-17 08:32:57
【问题描述】:

我有一个简单的包,可以将数据从规范化数据库传输到非规范化数据库。

它在 Visual Studio 2015 上针对远程开发服务器 SQL Server 2012 运行良好。

但是当我将它上传到开发服务器并使用执行包实用程序运行它时 我收到此错误:

文本被截断或目标代码页中的一个或多个字符不匹配

检查的内容:

  1. 检查了错误列,它在源数据库和目标数据库中的类型、长度 (varchar 250) 和排序相同。

  2. 在开发服务器上安装了 SQL Server 2012 SP3

  3. 谷歌搜索此错误我发现这是典型的平面文件导入,但我使用的是 OLE DB 源和目标

  4. 包是从 Visual Studio 2008 升级的,并且 ssis 项目设置为针对 SQL Server 2012 运行

  5. 将错误/截断行重定向到平面文件不会产生任何结果

  6. 用高级编辑器检查输入和输出,都是[DT_STR] 250 & 相同的代码页

有什么想法吗? 谢谢。

【问题讨论】:

  • Ssis 有时会根据来自平面文件的样本数据保留输出列 varchar (50)。所以请检查输出列宽
  • 嗨@niketshah90,检查输出列,长度为250。我使用的是 OLE DB 源,而不是平面文件。
  • 感谢@marc_s,已记录更改。

标签: sql ssis sql-server-2012 truncated


【解决方案1】:

您应该通过右键单击 OLEDB 源和目标组件来检查高级编辑器。检查它们的数据类型和长度。它们应该匹配。

流程:

在您的源任务上,右键单击->显示高级编辑器->输入和输出属性->源输出->输出列->数据类型属性->数据类型/长度

根据您的要求以类似的方式在源和目标中更改(数据类型/长度)。

在您的源任务上,右键单击 -> 显示高级编辑器 -> 输入和输出属性 -> 源输出 -> 输出列 -> TruncationRowDisposition 。

--Fail Component - 如果发生截断则失败

--Ignore Failure - 忽略截断错误

--重定向行 - 将截断的行重定向到所需的目的地

您也可以检查行来猜测原因,如果它们仍然失败

希望对你有帮助!

【讨论】:

  • 决定再次实现行重定向,这次我得到了结果。不知道为什么上次没有。该错误是由无效字符引起的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-03-30
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
相关资源
最近更新 更多