如何在 SQL Server 事务中设置“SET XACT_ABORT ON”?

2023-12-25

我想设置SET XACT_ABORT ON在带有事务的 SQL Server 2008R2 存储过程中,因此在创建脚本中执行此操作:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET XACT_ABORT ON
GO

CREATE PROCEDURE MyProc
AS
BEGIN TRAN  
    ... 
IF @@ERROR <> 0
BEGIN
    GOTO Done
END 
    ... 
IF @@ERROR <> 0
BEGIN
    GOTO Done
END 
COMMIT TRAN     
Done:
IF @@ERROR <> 0
BEGIN
    ROLLBACK TRAN
END
GO

成功创建后,我通过单击“修改”存储过程选项并在生成的文件中检查事务ALTER PROCEDURE我看不到脚本SET XACT_ABORT ON line:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE MyProc
AS
BEGIN TRAN
...

我哪里错了或者有什么技巧?如何正确定义SET XACT_ABORT ON?


你通常设置xact_abort作为存储过程主体的一部分:

CREATE PROCEDURE MyProc
AS
SET XACT_ABORT ON
BEGIN TRAN  
....

有两个“特殊”设置是从创建该过程的会话中记住的。来自MSDN的解释: http://msdn.microsoft.com/en-us/library/ms190356.aspx

存储过程使用执行时指定的 SET 设置执行 时间,但 SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER 除外。已存储 指定 SET ANSI_NULLS 或 SET QUOTED_IDENTIFIER 的过程使用 在存储过程创建时指定的设置。如果在内部使用 存储过程中,任何 SET 设置都会被忽略。

因此,当您创建存储过程时,SQL Server 会将 QUOTED_IDENTIFIER 选项从连接复制到过程定义。目标是具有不同 QUOTED_IDENTIFIER 设置的其他人仍然可以获得过程作者预期的行为。

但情况并非如此XACT_ABORT.

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

如何在 SQL Server 事务中设置“SET XACT_ABORT ON”? 的相关文章

  • UseRowNumberForPaging 不是有效的

    我在用着 Microsoft EntityFrameworkCore SqlServer 1 0 0 rc2 final with SQL 2008根据谷歌上找到的一些结果 我只需添加选项 UseRowNmberForPaging 当创建一
  • Spring @Transactional 并发

    class MyService 公共无效a 同步 某个键 b Transactional 传播 传播 REQUIRES NEW 公共无效b 数据库工作吗 除非您使用代码编织 否则这是行不通的 Spring处理事务的默认方式是通过AOP代理
  • 如何在没有聚合函数的情况下在sql server中创建枢轴查询

    我正在使用 MS SQL SERVER 2008 并且有以下数据 select from account PERIOD ACCOUNT VALUE 2000 Asset 205 2000 Equity 365 2000 Profit 524
  • 数据库设计1对1关系

    我的数据库设计不正确 我应该在开发过程中解决这个问题吗 假定 user 表与 userprofile 表具有 1 1 关系 然而 实际设计中 用户 表与 用户配置文件 表具有 1 关系 一切正常 但无论如何应该修复它吗 做一件事 User
  • SSIS Excel 文件问题 - 创建文件失败

    我有 SSIS 包 可以抓取 excel 文件并将其加载到 sql 表中 运行它时出现以下错误 我尝试将 64 位运行设置为 false 那不起作用 我还安装了 64 位访问驱动程序引擎 这也没有帮助 数据流任务 Excel 源 2 出错
  • 从另一台计算机连接到 SQL Server

    我正在使用 C 连接到网络上另一台计算机上的 SQL Server 但收到一条异常消息 用户 用户名 登录失败 但是服务器日志状态表明使用 Windows 身份验证的用户连接成功 我的连接字符串是 Data Source ipaddress
  • 无法通过 SQL Server Management Studio 连接到 SQL Server Linux Docker 容器

    我对 Linux 操作系统很陌生 所以希望这不是一个愚蠢的问题 软件 Windows 10 专业版适用于 Windows 的 Docker 1 13 0 beta38 9805 SQL Server Management Studio v1
  • SQL Server 全文的自定义断字器

    有谁知道如何为 SQL Server 2005 创建自定义分词系统 我更喜欢用 C 编写它 我需要能够搜索 c f 等术语 但 字符是英语 英国 分词器组件中的分词器 不能以任何其他方式更改 我发现以下文章提供了不完整的示例 缺少 IWor
  • SQL Server 删除触发器 - 引用已删除行或标记为删除的行的行句柄

    我在表上有一个删除触发器 用于从另一个数据库的表中删除条目 CREATE TRIGGER dbo Trigger Contracts Delete ON dbo Contracts AFTER DELETE NOT FOR REPLICAT
  • SQL Server 为什么索引不与 OR 一起使用

    我一直在研究索引并试图了解它们是如何工作的以及如何使用它们来提高性能 但我错过了一些东西 我有下表 Person Id Name Email Phone 1 John E1 P1 2 Max E2 P2 我正在尝试找到对列进行索引的最佳方法
  • 如何使用jdbc驱动编写事务?

    我想使用 jdbc 编写一个事务java 我尝试过这个简单的交易 BEGIN TRANSACTION NL GO NL UPDATE table SET col test where id 1010 NL GO NL COMMIT 我尝试过
  • 将 MS Access 连接到网络上的 SQL Server

    我在 Windows 服务器上安装了 SQL Server Express 我有 10 个人在本地 PC 上安装了 MS Access 2016 假设数据库非常小且简单 连接 SQL Server 最简单的方法是什么 简单的 ODBC 可以
  • SQL Server - 即使在回滚的情况下如何确保标识字段正确增加

    在 SQL Server 中 如果涉及插入新行的事务被回滚 则标识字段中的数字将被跳过 例如 如果Foos表是99 然后我们尝试插入一个新的Foo记录但回滚 然后 ID 100 被 用完 下一个Foo行编号为 101 有什么方法可以改变这种
  • Cassandra 与 ZooKeeper 的事务 - 这有效吗?

    我正在尝试在 ZooKeeper 的帮助下为 Cassandra 实现一个事务系统 由于我认为我在数据库实现方面没有足够的经验 所以我想知道我的想法原则上是否可行 或者是否有任何重大缺陷 以下是步骤的高级描述 识别所有要编辑的行 键 和列
  • SQL Server 2017 快速安装失败

    我尝试在 Windows 10 上安装 SQL Server 2017 Express 但失败 这是失败后向我显示的详细信息 Action required Use the following information to resolve
  • SQL Server 'FETCH FIRST 1 ROWS ONLY' 无效使用

    我正在尝试将 Db2 查询转换为 SQL Server 我遇到了一个我不熟悉的构造 仅 FETCH FIRST 1 ROWS 这是在 db2 上运行的查询 select from products series where state xx
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • SQL Server 文本数据类型最大长度 = 65,535?

    我正在使用的软件使用文本字段来存储 XML 根据我的在线搜索 文本数据类型应该包含 2 31 1 个字符 目前 SQL Server 每次都会将 XML 截断为 65 535 个字符 我知道这是由 SQL Server 引起的 因为如果我直
  • T-SQL 插入或更新

    我有一个关于 SQL Server 性能的问题 假设我有一张桌子persons包含以下列 id name surname 现在 我想在此表中插入一个新行 规则如下 If id表中不存在 则插入该行 If id存在 然后更新 我这里有两个解决
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po

随机推荐

  • Feathers.js / Sequelize -> 具有两个模型之间关系的服务

    我已经通过sequelize 使feeas js 与mysql 一起工作 这是可行的 我可以从表中收集数据 下一步是在模型中定义 连接 我有一个包含 status id 和 country id 列的表 这些列引用元数据表中的 ID 在 S
  • 在重复测量数据中,如何进行子集化以选择匹配的病例和对照?

    我有一组按家庭聚类的数据 研究问题是同一家庭中具有不同特征 x 的 2 个人是否具有相同的二元 是 否 结果 y 在一些家庭中 所有成员都对 y 说 是 在其他家庭中 对于 y 有些是 是 有些是 否 我只想得到结果状态不一致的家庭 我猜测
  • 添加隐藏字段以结账并通过订单进行处理

    我想在结帐流程中添加一个验证码 该验证码是只读 或不可见 且预先填写并固定在订单上 客户需要此代码来验证订单 我将自定义数组添加到 woocommerce checkout fields 过滤器的计费字段中 VID fields billi
  • 使用 POI API 在 Excel 中显示百分比值

    我需要在 Excel 单元格中显示一个百分比格式的值 例如喜欢12 3 默认情况下 该值显示为文本 但我需要将其显示为数字 实现这一目标的适当方法是什么 你需要 将数据设置为数字 浮点 而不是文本 将单元格格式指定为百分比 就像是 cell
  • 哪个工具可以为我的数据库构建一个简单的 Web 前端 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是一名 SQL Server DBA 我想通过 Web 浏览器访问一个数据库 它将在 Intranet 内部使用 只需调用 SQL Serve
  • fuslogvw中的Default/NativeImage是什么意思?

    我偶尔使用 fuslogvw 来追踪加载程序集的问题 经过我所有时间的使用 似乎文件夹 NativeImage 具有加载我的 dll 的本机图像的结果 当未找到本机映像 通常没有 时 我认为它会查找 net 程序集 默认 文件夹是我通常关心
  • 为什么我收到这个 jsfiddle 错误,document.write 可以是 eval 的一种形式

    我正在测试我在看书时发现的代码 我在 JS fiddle 中测试时遇到此错误 document write可以是 eval 的一种形式 var text p This is b bold lt b gt lt p gt lt body gt
  • 设计 - 超时不起作用

    在以下情况下 Devise 不会使用户超时 用户登录 关闭选项卡 然后在超时 X 分钟内重新访问该 URL 用户仍处于登录状态 如果选项卡已打开并且稍后刷新 单击 则超时可以正常工作 这意味着timeoutable模块在这种情况下可以正常工
  • 为什么 sortBy 转换会触发 Spark 作业?

    根据 Spark 文档 只有 RDD 操作可以触发 Spark 作业 并且在调用操作时会延迟评估转换 我看到sortBy转换函数会立即应用 并在 SparkUI 中显示为作业触发器 为什么 sortBy是使用实现的sortByKey这取决于
  • 如何在Android上实现旋转控件?

    有人对如何创建旋转控件有任何想法吗 看起来像这样的东西 http www raywenderlich com 9864 how to create a rotating wheel control with uikit http www r
  • 在 Dart 中将任意长的十六进制字符串转换为数字?

    我需要将 8 个字符的十六进制子字符串转换为整数列表 例如 我可能有字符串 001479B70054DB6E001475B3 由以下子字符串组成 001479B7 1341879 decimal 0054DB6E 5561198 decim
  • 关于 putenv() 和 setenv() 的问题

    我一直在思考环境变量 并有一些问题 观察结果 putenv char string 这个电话似乎有致命的缺陷 因为它不会复制传递的字符串 所以您无法使用本地调用它 并且不能保证堆分配的字符串不会被覆盖或意外删除 此外 虽然我还没有测试过 由
  • 媒体播放器准备失败

    过去 8 个小时我一直在尝试开发一个简单的录音 播放应用程序 我希望能够以 3GP 格式录制音频 然后将其自动加载到MediaPlayer这样我就可以播放它 我 80 确定它正在录制并保存到代码中指定的位置 但是当我尝试将其加载到我的媒体播
  • 在 Gear S2 设备上启动 Web 应用程序时出现错误 81

    我正在使用 Tizen SDK 2 4 0 Rev5 在 Gear S2 上启动演示应用程序 HelloTizen wearable 2 3 但失败并出现以下错误 Unknown Error 81 Unknown Error 81 当我尝试
  • Javascript 模板 - 深度嵌套是否可能

    我正在构建一个任务应用程序 为了好玩 我只是坐下来思考这个问题 我在这里用文字把这个问题记在心里 模型非常简单 它包含以下集合Project 每个项目包含一个TaskList这些任务列表是nestable即例如一个任务设计首页可以有设计标头
  • std::unique_ptr 作为 std::thread 中函数的参数[重复]

    这个问题在这里已经有答案了 所以我想通过std unique ptr作为在单独线程中启动的函数的参数 我在编译时收到一个奇怪的错误 内容如下 1 gt c program files x86 microsoft visual studio
  • 如何正确使用“cv2.putText”在图像上绘制阿拉伯文本? (Python+OpenCV)

    我使用 python cv2 window10 python3 6 在图像中写入文本 当文本是英文时它可以工作 但是当我使用阿拉伯文本时它会在图像中写入混乱的代码 下面是我的代码 import cv2 import numpy as np
  • fork() 和 vfork() 有什么区别?

    有什么区别fork http pubs opengroup org onlinepubs 9699919799 functions fork html and vfork http man7 org linux man pages man2
  • 如何使用 python win32com 或 comtypes 中的 COM 访问 IRTDServer?

    环境 Windows 10 python 3 6 3 64 位 也尝试过 32 位 我是一名 Python 开发人员 几乎 第一次尝试使用 COM 但遇到了这个巨大的障碍 Problem 当我尝试使用在 dll 中实现的 IRTDServe
  • 如何在 SQL Server 事务中设置“SET XACT_ABORT ON”?

    我想设置SET XACT ABORT ON在带有事务的 SQL Server 2008R2 存储过程中 因此在创建脚本中执行此操作 SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO SET X