gpt4 book ai didi

.net - 跨不同数据库连接的多个 SQL 事务命令

转载 作者:行者123 更新时间:2023-12-04 15:05:37 28 4
gpt4 key购买 nike

我正在为我的应用程序使用 .NET 2.0/3.5 框架。我需要跨多个连接运行多个 SQL 命令,并且每个连接都在不同的服务器(Oracle、SQL Server)上。我需要确保这些命令是事务性的。

例如:我需要在 Oracle 和 SQL Server 数据库上的表中执行 INSERT,然后在没有抛出异常的情况下提交它们。如果有异常,如果需要,我想在两台服务器上回滚。

我怀疑我需要使用 System.Transactions 和 TransactionScope。这将要求我在数据库服务器和应用程序服务器上设置 Microsoft 分布式事务协调器 (MSDTC)。

我看了高低,找不到任何描述逐步设置具有相互身份验证的 MSDTC(包括配置防火墙设置和 MSDTC 设置)的文章。我查看了有关设置 MSDTC 的 Microsoft 文档,但似乎完全没有值(value)完整记录(除非你能找到我一篇关于如何设置它的非常好的 MSDN 文章。)

使用 MSDTC 是完成工作的唯一方法吗?

如果是这样,我该如何正确配置它?

编辑:

  • 我在所有机器上都使用 Windows Server 2003。
  • 我有两个 SQL Server。一个是 SQL Server 2000,另一个是 2005。
  • 我有一台 Oracle 服务器,它的版本是 11g
  • 我们正在开发的应用程序有时必须以事务方式更改/创建所有三个数据库中的记录。
  • 键盘和椅子之间不是问题。我们阅读了 MSDN 上有关如何设置有关 MSDTC 的所有内容的文章,但我们无法使 DTCPing 和其他测试应用程序正常工作。我们正在寻找详细介绍该过程的分步文章。我不止一次遇到过 MSDN 文档“遗漏”了做某些事情的步骤。
  • 最佳答案

    遗憾的是,来自两个供应商的官方文档似乎都乐于提及互操作提供商或另一个,但似乎都不愿意承认对方的数据库产品的存在。

    您可能更喜欢 Oracle Services for Microsoft Transaction Server 上的文档.

  • 甲骨文文档:
  • 10g
  • 9i
  • 旧版本存在,但在 8
  • 之后似乎发生了很大变化

    从 ODP.NET 10.2.0.3 开始,您应该(如果您已正确配置 MS DTC 并且存在 OraMTS dll)能够简单地使用 System.Transactions TransactionScope,就像在两个 sql server 数据库之间协调但使用一个 sql server 和 oracle 连接。可能需要 Oracle 10 及以上版本才能非常简单地开箱即用。

    Here is a guide to using DTC from .net 2.0 and Sql Server 2005 onwards .它特别指出了操作系统要求(这在很大程度上应该不再是一个问题,但值得注意)。
    此外,除非数据库和客户端在同一台机器上,否则必须启用网络 DTC。

    关于.net - 跨不同数据库连接的多个 SQL 事务命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887801/

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