gpt4 book ai didi

sql-server - 什么时候会释放 "nested transaction"中的 XLOCK?

转载 作者:行者123 更新时间:2023-12-04 01:26:22 26 4
gpt4 key购买 nike

在 SQL Server 2008 中,我知道没有嵌套事务这样的东西。这些似乎只是存在。我也知道一些专家强烈恳请开发人员不要使用可用的伪嵌套事务。例如,here .

但是,我有一个案例,我需要在特定嵌套过程中的一行上使用 XLOCK,但仅限于该过程的持续时间。它必须是那个锁,我显然想尽快放下锁。在伪代码中:

...outer procedure
BEGIN TRAN Inner
EXEC InnerProcedure

...InnerProcedure...
BEGIN TRAN Inner
SELECT ... WITH (XLOCK, ROWLOCK)
COMMIT TRAN Inner
-- NEVER rollback here; get the outer procedure to do this
...End InnerProcedure...

COMMIT TRAN Outer

我的问题是:
  • 考虑到 SQL Server 并未真正嵌套事务,这是最佳实践模式吗?
  • XLOCK 会在 COMMIT TRAN Inner 发布,还是只在 COMMIT TRAN Outer 发布?我想答案是肯定的。
  • 最佳答案

  • 不。不要使用“嵌套”事务(即使在 TSQL 中)。充其量,它们不会像您想象的那样工作:A SQL Server DBA myth a day: (26/30) nested transactions are real (False)
  • XLOCK 将在外部事务范围内释放。 [更新:包括 Remus 的建议]
  • 关于sql-server - 什么时候会释放 "nested transaction"中的 XLOCK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4421561/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com