SSIS中执行存储过程未报错的原因


背景: 一个SP中,插入临时表的语句被错误的注释掉,虽然如此,执行SP应当报错,

但在SSIS中执行该SP却成功了,导致了我们没有得到正确的结果,却又没收到错误信息.

先建一个存储过程

CREATE PROC sp_test_error_level
AS
BEGIN
SELECT GETDATE() AS col
--INTO #temp_test
FROM items

UPDATE #temp_test SET col = GETDATE()
END
go
EXEC sp_test_error_level

 

(2 個資料列受到影響)
訊息 208,層級 16,狀態 0,程序 sp_test_error_level,行 8
無效的物件名稱 '#temp_test'

可以看到在SSMS中执行时报错,

但是我们放到SSIS中执行却执行成功了

 

再来修改下SP

ALTER PROC sp_test_error_level
AS
BEGIN
--    SELECT GETDATE() AS col
--    INTO #temp_test
--    FROM items

UPDATE #temp_test 
SET col = GETDATE()
END
GO
EXEC sp_test_error_level
訊息 208,層級 16,狀態 0,程序 sp_test_error_level,行 8
無效的物件名稱 '#temp_test'。

执行仍然报错,但是这时候SSIS也正常报错了

区别在哪里呢?

第一个SP执行时在报错前返回了一个提示

(2 個資料列受到影響)

我猜测SSIS中执行SP时拿到第一个返回提示后认定其成功了,而实际上数据库中执行该SP却因为第二个返回错误回滚了

 

最后删除测试sp

DROP PROC sp_test_error_level

 

posted @ 2014-06-19 10:49  AlphaQcode  Views(307)  Comments(0Edit  收藏  举报