gpt4 book ai didi

.net - 是否可以在多个程序之间共享 SQL Server 事务?

转载 作者:行者123 更新时间:2023-12-04 15:55:39 25 4
gpt4 key购买 nike

我有一个案例,我需要以下序列用于我们的内部工具,这些工具必须协同工作以准备用于测试目的的数据库。

  • program1启动、开始数据库事务并退出
  • program2启动并加入同一个数据库事务,执行一堆语句并退出
  • program3还启动并加入同一个数据库事务,执行一堆语句并退出
  • program4开始并决定是否/何时回滚事务

  • 这些程序是 .Net 命令行应用程序。
    我研究了 MSDTC/ TransctionScope但我找不到任何程序启动事务然后退出同时让事务打开以供其他程序加入的情况。
    这是可行的吗?

    编辑(可能的解决方案):
    我测试了 sp_getbindtoken / sp_bindsession 它会起作用: program1会这样做(在 .Net 代码中)
    begin transaction
    DECLARE @bind_token varchar(255);
    EXECUTE sp_getbindtoken @bind_token OUTPUT;
    print @bind_token
    并返回/写入 bind_token到其他程序可以获取 token 并加入交易的文件:
    sp_bindsession ':7:FliJ.4AShUOIOjb<6^]5---0aE=--'
    //Do stuff
    rollback transaction
    但是 program1必须在整个过程中保持事件状态才能在其他程序加入/离开 session 时保持 session 事件。
    这个 api 的文档指出:

    This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

    最佳答案

    SQL 事务被锁定到它们的连接。不能通过多个应用程序共享连接。

    然而,实现您的目标的一种方法是将来自所有应用程序的查询代理到实际保存连接及其事务的单个应用程序。

    关于.net - 是否可以在多个程序之间共享 SQL Server 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51791689/

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