SSIS中的多个语句执行SQL任务

时间:2014-09-09 16:44:39

标签: sql ssis sql-server-2012

在我的SSIS包中,我有一个带有2个语句的执行SQL任务。基本上,它们是:

INSERT INTO table2 SELECT * FROM table1;
TRUNCATE TABLE table1

第一个语句失败(重复记录)。但是table1现在是空的!我是否误解了数据库的基本原理?!如果第一个语句失败,我预计整批都会失败。

在执行报告中,预计会出现错误消息: 1.无法插入重复的键行。 该声明已经终止。可能的失败原因bla-bla

我的服务器是SQL Server 2012 SP2 CU1,OLEDB连接

我知道这个表没有其他截断语句。我疯了吗?

2 个答案:

答案 0 :(得分:2)

你需要陷阱错误..

INSERT INTO table2 SELECT * FROM table1;
IF @@ERROR = 0
    TRUNCATE TABLE table1

答案 1 :(得分:0)

好的,经过一些测试后我确认这是预期的行为。可能的解决方案包括:

  1. 使用IF @@ ERROR(感谢t_m!)
  2. 使用GO将线分成批次。批次中的行将执行,但下一批次不会执行。
  3. 将线分成多个任务(duh)。