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
  • 相关阅读:
    大话数据结构笔记
    zsh安装教程
    Matlab安装教程
    7-16 插入排序还是归并排序 (25 分)
    7-14 插入排序还是堆排序 (25 分)
    7-14 二叉搜索树的最近公共祖先 (30 分)
    7-11 笛卡尔树 (25 分)
    中缀转换为后缀和前缀
    7-15 水果忍者 (30 分)
    兔子的区间密码(思维)
  • 原文地址:https://www.cnblogs.com/alphaqcode/p/3796017.html
Copyright © 2011-2022 走看看