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
  • 相关阅读:
    自考新教材-p240_2
    自考新教材-p243_5_(1)
    自考新教材-p242_4
    自考新教材-p233
    自考新教材-p230
    Spring入门(9)-AOP初探
    MongoDB的备份与恢复
    JVM基础知识(1)-JVM内存区域与内存溢出
    Spring入门(8)-基于Java配置而不是XML
    Spring入门(7)-自动检测Bean
  • 原文地址:https://www.cnblogs.com/alphaqcode/p/3796017.html
Copyright © 2011-2022 走看看