SQL Server 2008事务,需要回滚吗?

2024-04-22

我有一个存储过程BEGIN TRANSACTION and COMMIT TRANSACTION陈述。事务中是一个选择查询WITH(XLOCK, ROWLOCK).

如果提供超出范围的值,则由于某些计算会导致算术溢出错误,交易可能会失败。此错误会在任何插入/更新语句之前发生。

我的问题是,我应该将事务包装在 TRY/CATCH 中并回滚吗?或者这并不是真正需要的,并且如果事务失败,所有锁都会自动释放?我唯一担心的是,如果事务失败,SQL 不会释放事务的所有锁。

Thanks,

Tom


一个更简单的方法是:

set xact_abort on

这将导致事务在发生错误时自动回滚。

示例代码:

set xact_abort on
begin transaction
select 1/0
go
print @@trancount -- Prints 0

set xact_abort off
begin transaction
select 1/0
go
print @@trancount -- Prints 1

如果多次执行第二段,您将看到事务计数增加到 2、3、4 等。第一段的单次运行将重置所有事务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008事务,需要回滚吗? 的相关文章

随机推荐

  • SQL Server 更新分组依据

    我尝试在 MS SQL 上执行此操作 但仅在 Group by line 处返回错误 update temp Set Dos Count 1 From Temp Table2010 s where Id s Total and s tota
  • 在 php 中上传文件大小 > 5MB 时出错?

    我上传的文件大小 gt 5MB 和配置php ini 但是当上传文件是结果时error File Error size ini 如何配置 还有另一个配置条目会影响此行为 post max size
  • Windows 服务恢复未重新启动服务

    我将 Windows 服务的恢复配置为在失败后延迟一分钟重新启动 但我从未真正重新启动服务 即使有最明显的错误 我确实在事件查看器中收到一条消息 无法在源 MyApp exe 中找到事件 ID 1 的描述 本地计算机可能没有必要的注册表信息
  • pip install ortools:没有匹配的发行版 - Alpine

    在 Docker 中 我尝试运行 pip install ortools 但找不到 其他 pip 安装包可以完美运行 我在 Dockerfile 中使用 FROM python 3 6 8 alpine bash 4 4 pip insta
  • 实体框架:获取存储库中的子类对象

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo
  • schema.org 产品可用性标签标记

    哪一个是正确的 span span 我检查了官方模式文档 并在示例中找到了所有这些 我想它们都可以 但目前有什么首选标准吗 Using span与content属性是invalid HTML5 和 Microdata 都不允许content
  • Amazon S3 静态网站不提供 css 或 js 文件

    我一直在尝试在 Amazon S3 上建立一个静态网站 我已经设置好使用我的个人域 到目前为止我已经能够很好地访问内容 所有链接都有效 无论是 根 目录中的页面还是子文件夹中的页面 因此 S3 似乎可以遵循我正在使用的路径 问题是没有任何
  • 根据另一个数据库的查询结果查询一个数据库

    我在 VS 2013 中使用 SSIS 我需要从 1 个数据库获取 ID 列表 并使用该 ID 列表 我想查询另一个数据库 即SELECT from MySecondDB WHERE ID IN list of IDs from MyFir
  • 扩展 Three.js 类

    我想扩展 Three js Object3D 类 但不知道该怎么做 有一个 Stackoverflow 问题 我已经阅读 重新阅读和尝试过 但无法让它为我工作 有没有办法扩展 ThreeJS 对象 https stackoverflow c
  • Xcode 服务:选择 Git 分支

    我开始在 Mavericks 中设置新的 Xcode 服务 我创建了一个新的机器人 但没有询问我它应该构建的分支 如何为每个机器人选择分支 我不仅想建造master 但也有不同的分支 在当前版本中 当您在 Xcode 中创建机器人时 它将链
  • 如何将音乐播放器保留在页脚中,当我单击子页面的链接时,该音乐播放器不会重新加载?

    我已经尝试解决这个问题有一段时间了 并且浏览了许多论坛来寻找解决方案 这是我的设置 任何帮助将不胜感激 我目前有一个索引页 在 内容 部分的上方和下方加载 JavaScript 页眉和页脚 我在标题内还有一个导航链接列表 我的音乐播放器位于
  • 将向量::emplace_back与shared_ptr一起使用

    include
  • 无法让 mongoid 与 Rails 4 一起使用

    我是按照官方教程来的 http mongoid org en mongoid docs installation html 我在 Gemfile 中注释掉了 sqlite3 以及以下几行 gem mongoid gt 4 github mo
  • RandomNumberGenerator 与 RNGCryptoServiceProvider

    根据 MSDN 文档随机数生成器 http msdn microsoft com en us library system security cryptography randomnumbergenerator 28v VS 71 29 a
  • Android Fabric Twitter 分享监听器

    我使用 Fabric SDK 从我的应用程序发送推文 我构建了一个共享对话框并从活动中发送推文 Override protected void onCreate Bundle savedInstanceState super onCreat
  • 提取文本文件每行第一个逗号之前的文本

    我有一个如下所示的文件 Breve a writ used more frequently in the plural brevia Brevia magistralia official writs framed by the clerk
  • React Router V4 侧边栏菜单中的错误

    我正在开发一个单页 ReactJS Web 应用程序 但我知道我在定义路由时做错了什么React Router V4 我的问题如下 PrivateRoute in my routes js文件未按预期工作 也就是说 我不知道为什么 但我的侧
  • Node js 中的响应标头数据为 zip

    我已经尝试使用此代码在标头中发送响应 zip 但我这边缺少一些内容 在此我得到的响应如屏幕截图所示 这是我的代码 const zipPath test zip I have a zip with 2 files inside it pass
  • 如何在不使用某些框架的情况下在 php 中实现 MVC

    我对模型 视图 控制器模式有一些 也许是基本的 知识 我想使用它创建一个网站 但我发现如何实际实现这一点有点令人困惑 我陷入了细节之中 假设我有一个网站 每个用户都保存一些待办事项列表 你会如何处理这个问题 你会创建什么类 哪个类将输出 H
  • SQL Server 2008事务,需要回滚吗?

    我有一个存储过程BEGIN TRANSACTION and COMMIT TRANSACTION陈述 事务中是一个选择查询WITH XLOCK ROWLOCK 如果提供超出范围的值 则由于某些计算会导致算术溢出错误 交易可能会失败 此错误会