2014-01-22 27 views
1

我在與序列容器有連接的數據包中有一個sql任務。在SQL任務,我有以下幾點:ssis如何在已回滾的數據包中引發錯誤

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 

的問題是,當一個錯誤確實發生了,「回滾過渡」被執行,SQL Server不會引發錯誤,所以SQL任務不一樣好,並且綠色連接前進到下一個容器。在SSIS數據包的sql任務中進行回滾時,創建失敗或阻礙下一步的最佳方式是什麼?謝謝。

+1

您可以隨時拋出自己的錯誤中catch塊。 –

+0

如何,你的意思是選擇1 \ 0 lol – MilesMorales

回答

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

+0

這引發了一個消息,但它不會拋出一個錯誤,將導致從一個ssis對象到另一個失敗。 – MilesMorales