sql-server - SQL Server : Find out what row caused the TSQL to fail (SSIS)

标签 sql-server sql-server-2005 tsql ssis

SQL Server 2005 问题:

我正在开展一个数据转换项目,其中我要获取 80k 多行并将它们从一个表移动到另一个表。当我运行 TSQL 时,它会出现各种与转换类型或其他相关的错误。有没有办法找出导致错误的行?

======================

更新:

我正在执行 INSERT INTO TABLE1 (...) SELECT ... FROM TABLE2 Table2 只是一堆 varchar 字段,其中 TABLE1 具有正确的类型。

该脚本将被放入存储过程中并从 SSIS 包中执行。 SSIS 包首先将 5 个大的平面文件导入到 TABLE2 中。

以下是错误消息示例:“将 char 数据类型转换为日期时间数据类型导致日期时间值超出范围。”

有很多日期字段。在表 2 中,出生日期有诸如“02/05/1075”之类的数据值。我想检查导致错误的每一行,这样我就可以向负责错误数据的部门报告,以便他们可以纠正它。

最佳答案

这不是 SSIS 的做法。您应该让数据从源流到目的地,并在中间进行任何所需的转换。您将能够通过使用目标的错误输出来获取错误详细信息,实际上,还可以获取错误行。

我经常将一个目的地的错误输出发送到另一个目的地 - 一个文本文件或一个设置为允许所有内容的表,包括在实际目的地中无效的数据。

<小时/>

实际上,如果您在 SSIS 中按照标准方式执行此操作,则应该在设计时检测到数据类型不匹配。

关于sql-server - SQL Server : Find out what row caused the TSQL to fail (SSIS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094483/

相关文章:

sql-server - 返回列最大值百分比范围内的行

SQL Server - 如何向登录名授予对所有数据库的读取访问权限?

sql-server - SQL Server 中如何计算选定行的返回值?

sql-server - Excel 中的超时,在 SSMS 中立即执行

sql - 高效的 SQL Server 存储过程

sql-server-2005 - 如何从SQL Server获取DOMAIN名称?

c# - 我们的 SQL 或 Entity Framework 中存在错误?

sql - 在 Oracle 中打开 OFF 等效的 IDENTITY INSERT

sql - 如何找到数据库存储过程中使用的所有列?

c# - 改进 Entity Framework 插入