【问题标题】:Run parallel transaction while executing code in another session在另一个会话中执行代码时运行并行事务
【发布时间】:2020-09-30 18:55:14
【问题描述】:

是否有可能在某个特定时间点运行更新,但在不同/并行会话中?在提供的示例中,我希望在运行WAITFOR 时运行一些特定的更新。目前我有这个WAITFOR 块有时间切换到另一个 SSMS(或其他工具)窗口/选项卡并在等待 10 秒时运行更新。从逻辑上讲,唯一需要做的事情就是在这个时间点开始交易。

EXEC dbo.p_sync_from_accounts_ext_test @enable_snapshot_isolation = 1
                                     , @run_update_flag = NULL
                                     , @run_wait_for_10 = NULL
                                     , @acc = @acc;

WAITFOR DELAY '00:00:10'; -- Execute update in parallel transaction
-- table update should be performed in that parallel transaction

EXEC dbo.p_finish_sync_attributes;

【问题讨论】:

  • 不,存储过程,嵌套的EXEC语句与那个问题无关
  • 阅读答案,而不是问题。 FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;', ...)
  • 我尝试将使用OPENROWSET 的UPDATE 语句放在WAITFOR DELAY 语句之前,结果与我使用普通UPDATE 相同。我了解缺少信息,我将尝试提供有关我要解决的确切任务/问题的更多信息。简而言之,它与rowversion 值有关,在更新期间结合时态表的间隔列值生成。
  • @DmitrijKultasev,您的问题解决了吗?

标签: sql-server tsql transactions sql-server-2016


【解决方案1】:

是的,你可以做到。

方法 1: loop-back linked server(指向您当前服务器的链接服务器)未启用 DTC。从您的链接服务器调用您的 SP。

方法2:创建一个SQL Server Job和start the job programmatically

请注意,在第一种情况下,您的更新语句必须包含在 SP 中。在第二种情况下,它是可取的,但不是必需的。

【讨论】:

  • 我无法使用环回链接服务器(禁用 DTC)来做到这一点。用工作执行它肯定有帮助
猜你喜欢
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2018-08-20
相关资源
最近更新 更多