ssis如何在已回滚的数据包中引发错误

时间:2014-01-22 20:22:00

标签: sql sql-server visual-studio ssis bins

我在数据包中有一个sql任务,它与序列容器有连接。在sql任务中,我有以下内容:

BEGIN TRY
BEGIN TRAN

TRUNCATE TABLE  foo_Copy
INSERT INTO foo_Copy
SELECT * FROM foo

COMMIT TRAN
END TRY

BEGIN CATCH

ROLLBACK TRAN

END CATCH

问题是当发生错误时,执行“Rollback Tran”并且sql server不会引发错误,因此sql任务也不会,并且绿色连接将进入下一个容器。创建故障的最佳方法是什么,或者在SSIS数据包中的sql任务中执行回滚时阻碍下一步。感谢。

1 个答案:

答案 0 :(得分:0)

您使用RAISERROR,请参阅此链接:sql try catch

BEGIN CATCH
  -- Whoops, there was an error
  IF @@TRANCOUNT > 0
     ROLLBACK

  -- Raise an error with the details of the exception
  DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
  SELECT @ErrMsg = ERROR_MESSAGE(),
         @ErrSeverity = ERROR_SEVERITY()

  RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH

如果您使用的是Sql Server 2012,则可以使用THROW代替RAISERROR:throw error