0

我有一个关于 SSIS 的快速问题。我正在开发一个包,它执行从 Excel 源到 OLE DB 连接的数据流任务。数据库中的列应该允许空值。但是有一个问题是,当我在 Excel 电子表格的数字列中输入错误数据时,它不会导致数据流任务像我希望的那样失败。我试图通过显式尝试转换派生列步骤中的任何数字列来解决这个问题,但是会发生同样的事情——如果我在 Excel 数字列中输入 abc,如果在包运行后在 db 中显示为 NULL。我确实想允许 NULLS,但如果数据损坏,我希望包失败。

任何意见,将不胜感激 :)

4

2 回答 2

1

如果您在定义导入的位置编辑 SSIS 任务,则可以为每列选择错误处理。在那里,您可以选择将其设置为失败并停止、忽略并继续等。

此链接应该可以帮助您根据需要处理它:

http://sqlblog.com/blogs/rushabh_mehta/archive/2008/04/24/gracefully-handing-task-error-in-ssis-package.aspx

http://sqlserver360.blogspot.de/2011/03/error-handling-in-ssis.html

http://msdn.microsoft.com/en-us/library/ms141679.aspx

于 2013-01-14T19:41:31.230 回答
1

我刚刚试过这个,忽略/重定向/失败设置似乎没有任何效果,NULL 无论如何都会更新到数据库中。

如果您不想要 NULL,我建议您修改目标表的定义,以指定NOT NULL对您希望为数字的列的约束。这样数据库更新和包将失败。

但是由于您想要空列,我唯一可以建议的是您编写一个脚本任务或脚本组件来在接受数据之前读取和验证数据。

或者,将 Excel 文件读入所有列所在的暂存区域,VARCHAR然后通过 SQL 对其进行验证

于 2013-01-15T09:53:13.870 回答