zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    多文档上传文件
    每个程序员都有一颗想改变世界的心
    获取在服务器上面的路径
    串行口通信(二)之串行口方式0
    串行口通信(一)
    keil进阶教程
    keil教程之新建软件工程
    定时器2的使用
    定时器之计数器应用
    定时器(二)
  • 原文地址:https://www.cnblogs.com/alphaqcode/p/3796017.html
Copyright © 2011-2022 走看看