从多个源到单个SQL Server实例的分布式事务

时间:2015-04-02 16:31:35

标签: sql-server msdtc

我想要做的是让多个线程,进程甚至机器共享一个事务。确切地说。我想分享一大堆工作(主要是SQL Server查询)到我的多个线程,进程或机器,我希望工作是原子的。我查看了MSDTC,但是如果你想要更新几个不同的SQL Server实例(或其他资源),并且在同一个事务下拥有所有内容,那么它似乎很棒,但它似乎总是来自同一个源。即一个过程(一个连接)。可能吗?除SQL Server外,对技术没有限制。我想要两阶段提交,但我想从一台机器启动事务,并将该事务(或一种加入它的方式)提供给其他进程。

问题定义 问题是我有一个漫长的过程,涉及一些复杂的计算和数据库更新。可以安排整个过程,并且可以并行处理大量过程。我希望将处理(包括数据库更新)包含在单独的进程中,包括远程进程。

2 个答案:

答案 0 :(得分:3)

严格回答问题:

然而,这几乎肯定是你想做什么。我建议您描述您尝试解决的实际问题,而不是询问如何实施您认为合适的特定解决方案。

答案 1 :(得分:0)

我想你想做一笔大交易;比如用select语句加载一个巨大的行集;如果我以正确的方式行事;我希望这些步骤可以引导你达到你想要的效果;)。

  1. 每个进程,线程或机器都说它们需要一个唯一的ID,比如s1,s2,...,sn。
  2. [可选]由于每个电台的容量设置了所有电台的电台尺寸。
  3. 将此数据存储在station
  4. 等表格中
  5. 现在使用来自station表的[动态]分页解决方案。
  6. 将每个页面分配给一个电台,呼叫电台执行其页面。
  7. 示例:

    查询:

    select * from someTables
    

    站:

    stationId | size   
    ----------+----------
    s1        | 10
    s2        | 20
    ...       | ...
    ----------+----------
              | sumSize
    

    (i。)您需要一个在sumSize小于count(*)时重复的队列

      

    queue_repeat_count = (select count(*) from sometables) / sumSize

    当您呼叫电台时,您需要重复queue_repeat_count次。

    在每个队列中,cursor表上有一个station来调用带有参数的站点,如下所示:

      

    station_Calls(queue_repeat)

    您的服务器中有一个存储过程,它使用queue_repeat参数处理分页。

    这只是我心中的一个想法,我希望它可以帮到你;)。