![]() |
1
35
请记住,无论有没有错误,Try-Catch都无法捕获。
然而,
如果客户机命令超时启动,客户机发送“abort”指令,它还将删除锁等。没有
|
![]() |
2
3
我认为,在执行分布式事务时,需要设置xact_abort on。 From the books on line: 对于大多数OLE DB提供程序(包括SQL Server)的隐式或显式事务中的数据修改语句,必须设置xact_abort。唯一不需要此选项的情况是提供程序支持嵌套事务。有关详细信息,请参阅分布式查询和分布式事务。 |
![]() |
3
1
xact_abort确实会影响错误处理:当遇到错误时,它将中止整个批处理,以及产生错误的行后面的任何代码(包括错误检查!)永远不会执行。此行为有两个异常:xact_abort被try…catch取代(catch块将始终执行,事务不会自动回滚,只呈现不可接受的状态),xact_abort将忽略raiserror。 |
![]() |
4
1
我的理解是,即使使用了try catch,并且catch块中没有使用rollback语句,当
|
![]() |
5
1
有一个警告就是要盲目使用
我读了一篇关于stackoverflow的有说服力的文章,它建议你
应该
总是使用
除了你的 “更多行动” 将不再发生在事务中。因为即使你抓住了 重复的密钥冲突 ,服务器不再处于事务中:
我已经改变了自己。
从未
使用
编辑
:人们似乎认为问题来自于打电话
让我们使用一些伪代码,更改名称以保护NDA:
这是一种使这个答案更易读的学究式方法;我们使用
xact_abort on很酷,让我们使用它
所以,代码是有效的。如果有错误,我们
期待
,我们处理它并继续。这叫做
处理错误
. 如果一些
未知的
异常发生(我们没有预料到的),我们
现在让我们看看我们是否盲目地遵循
你看到会导致 道格斯 ?
道格斯
已正确写入以处理错误情况。但是介绍
正确编写并能正常工作的代码会损坏,导致错误,最坏情况下还会导致数据库损坏。都是因为我打开了
|
![]() |
6
0
当xact_abort在trigger中设置为off时,我调用trigger body中的raiseError,更改不会回滚。 |
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |