Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >最佳实践尝试/捕获抛出和XACT_ABORT sql server

最佳实践尝试/捕获抛出和XACT_ABORT sql server
EN

Database Administration用户
提问于 2019-05-07 22:07:01
回答 1查看 2.7K关注 0票数 0

我以前使用过为我们生成ETL脚本的软件。脚本具有以下结构,但这似乎与我在msdn中看到的内容相反。有人能对下面的结构提供任何想法吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET XACT_ABORT OFF

SET NOCOUNT ON

BEGIN TRY

'DO STUFF'

BEGIN CATCH

SET @return_msg = 'procedure name FAILED'

  + '. Step ' + CONVERT(VARCHAR,ISNULL(@v_step,0))

  + '. Error Num: ' + CONVERT(VARCHAR,ISNULL(ERROR_NUMBER(),0))

  + '. Error Msg: ' + ERROR_MESSAGE()

  SELECT @return_msg

END CATCH

IF XACT_STATE() <> 0

  BEGIN

   ROLLBACK TRANSACTION

  END

  RETURN 0

END
EN

回答 1

Database Administration用户

发布于 2019-05-07 23:00:35

要用xact_state实现有效的尝试捕获,请遵循此msdn链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET XACT_ABORT on

SET NOCOUNT ON

BEGIN TRY

'DO STUFF'
End Try
BEGIN CATCH

SET @return_msg = 'procedure name FAILED'

  + '. Step ' + CONVERT(VARCHAR,ISNULL(@v_step,0))

  + '. Error Num: ' + CONVERT(VARCHAR,ISNULL(ERROR_NUMBER(),0))

  + '. Error Msg: ' + ERROR_MESSAGE()

  SELECT @return_msg

-- Test XACT_STATE for 0, 1, or -1.  
    -- If 1, the transaction is committable.  
    -- If -1, the transaction is uncommittable and should   
    --     be rolled back.  
    -- XACT_STATE = 0 means there is no transaction and  
    --     a commit or rollback operation would generate an error.  

    -- Test whether the transaction is uncommittable.  
    IF (XACT_STATE()) = -1  
    BEGIN  
        PRINT 'The transaction is in an uncommittable state.' +  
              ' Rolling back transaction.'  
        ROLLBACK TRANSACTION;  
    END;  

    -- Test whether the transaction is active and valid.  
    IF (XACT_STATE()) = 1  
    BEGIN  
        PRINT 'The transaction is committable.' +   
              ' Committing transaction.'  
        COMMIT TRANSACTION;     
    END;  

END CATCH

  RETURN 0
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/237608

复制
相关文章
Java 捕获和抛出异常
Java中把非正常情况分为两种:异常(Exception)和错误(Error),其中Error错误一般是指与虚拟机相关的问题,这种错误无法恢复或不可能捕获,而对于Exception异常我们可以使用try…catch进行捕获。try…catch不允许存在单独的try块或catch块,可存在多个catch块。try块中存放业务功能代码,catch块中存放异常处理代码。Java7后支持用catch捕获多个异常,也可捕获自定义异常。对于捕获的异常一般可以使用printStackTrace()方法追踪输出至标准错误流。try…catch后可以添加finally,使用finally可以保证除系统退出外finally块中代码绝对执行。捕获异常时需要注意一定要先捕获小异常,再捕获大异常,否则小异常将无法被捕获。代码示例如下
用户7886150
2021/04/06
1.9K0
Java-捕获和抛出异常
Error和Exception 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合 你的要求、你的程序要打开某个文件,这个文件可能不仔仕或省乂件信孔个对,小女次队效库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了,等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是: Exception,意思是例外。这些,例外情况,或首叫异吊,忑么L找1与住/e口年心理。而不至于程序崩溃。 异常指程序运行中出现的不期而至的各种状况,
白衣少年
2022/12/26
9420
Java-捕获和抛出异常
python抛出异常和捕获异常_Python异常
class Widget: def __init__(self,size=(40,40)): self._size=size def getSize(self): return self._size def resize(self,width,height): if width<0 or height<0:
全栈程序员站长
2022/11/02
2.9K0
python抛出异常和捕获异常_在try块中可以抛出异常吗
2.解析 关键字try 以及except是 使用Python 解释器主动抛出异常的关键, Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行 except…as… 是固定的语法格式 打印traceback信息 finally 后的代码不管是否抛出异常都会执行 except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始 注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)
全栈程序员站长
2022/11/02
4.5K0
python3-抛出、捕获异常
''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类: 1.语法错误(运行前进行判定和修正) 2.逻辑错误 异常种类: AttributeError 属性错误 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输出错误 输入/输出异常;基本上是无法打开文件 ImportError 模块
py3study
2020/01/09
1.6K0
添加引用方式抛出和捕获干净的WebService异常
说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。
跟着阿笨一起玩NET
2018/09/20
8210
添加引用方式抛出和捕获干净的WebService异常
捕获异常抛出事务不回滚
方法名上加注解事务 @Transactional 使用注解的简单模式,报错会回滚,但是如果方法中捕获异常后手动抛出异常,事务并没有回滚。
二十三年蝉
2019/07/02
1.5K0
自定义异常并抛出,捕获
# 需求:类创建人的对象:初始化年龄0,让用户输入自己的年龄:1-100合法 小于1或大于100 抛出异常 # 自定义异常 -- 自定义异常类 也要继承exception class AgeError(Exception): def __init__(self): self.error_msg = 'AgeError: 年龄应该是在1-100之间!' def __str__(self): return self.error_msg class Person
汪凡
2018/05/29
5620
python抛出异常和捕获异常_python自定义异常
有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。
全栈程序员站长
2022/11/07
9670
python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」
在 Python 中是使用 raise 关键字来抛出异常的,比如在下面这个函数中,如果不存在目标文件,则会抛出一个 Exception 通用异常。
全栈程序员站长
2022/11/07
9130
尝试利用捕获来做上报
标准浏览器的事件模型是先捕获再冒泡,由于考虑到兼容问题,事件绑定一般都是基于冒泡来做的,那么什么情况下可以考虑利用捕获来做事件绑定呢?
IMWeb前端团队
2019/12/03
3140
Unhandled Exception: 处理未捕获异常的最佳实践 ️
大家好,我是默语,擅长全栈开发、运维和人工智能技术。未捕获异常(Unhandled Exception)是软件开发中常见的问题,会导致程序崩溃和用户体验下降。在本文中,我将分享处理未捕获异常的最佳实践,帮助大家提高程序的稳定性和可靠性。关键词:未捕获异常、异常处理、Java、最佳实践。
默 语
2024/11/22
5390
Python异常捕获和抛出-对方不想和你说话并向你抛出了一个异常
Python使用异常类来管理异常信息。当发生异常的时候,程序会抛出一个异常信息,自动根据代码的层次查找异常处理信息。当代码发生异常而没有指定处理异常的方法是,Traceback会打印发生异常时代码执行栈的情况。
唔仄lo咚锵
2021/09/14
1.2K0
Python异常捕获和抛出-对方不想和你说话并向你抛出了一个异常
尝试利用捕获来做上报
摘要总结:该文介绍了如何利用捕获来做上报,包括清理之前做的上报和重新添加新的上报,可以在最外层基于捕获来绑定事件,从而实现基于捕获的上报。同时还可以使用捕获来做页面资源的加载监控等。
IMWeb前端团队
2017/12/29
4950
【C#】添加引用方式抛出和捕获干净的WebService异常
说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。
AhDung
2018/09/13
1.1K0
【C#】添加引用方式抛出和捕获干净的WebService异常
微服务-如何捕获上游服务抛出异常?
最近公司来了个新项目,业务功能线很多也比较繁琐,用户量也会不少,在跟同事商量后,决定搭个微服务架构来应对。便开始集成网关,上注册/服务中心,上分布式事务等等…
Blue_007
2023/10/21
6291
微服务-如何捕获上游服务抛出异常?
nodejs中错误捕获的一些最佳实践
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢! 很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 应该用哪种方式暴露错误?throw、callback(err, result)、Event Emitter或者其他方式? 如何假设函数的参数?是
用户1097444
2022/06/29
1.2K0
nodejs中错误捕获的一些最佳实践
本文作者:IMWeb yisbug 原文出处:IMWeb社区 未经同意,禁止转载 本文内容大部分来自 https://www.joyent.com/node-js/production/d
IMWeb前端团队
2018/01/08
1.8K0
nodejs中错误捕获的一些最佳实践
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢!
IMWeb前端团队
2019/12/04
1.3K0
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3
码仔janrs.com
2023/03/31
4630

相似问题

SQL Server尝试捕获传输

10

sql server日志传送方法的最佳实践

10

SQL Server作业中的事务处理和尝试捕获

20

Server 2012 AlwaysOn性能最佳实践

20

Server作业日志记录最佳实践

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文