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/