我正在为我的应用程序使用 .NET 2.0/3.5 框架。我需要跨多个连接运行多个 SQL 命令,并且每个连接都在不同的服务器(Oracle、SQL Server)上。我需要确保这些命令是事务性的。
例如:我需要在 Oracle 和 SQL Server 数据库上的表中执行 INSERT,然后在没有引发异常的情况下提交它们。如果有异常,如果需要,我想在两台服务器上回滚。
我怀疑我需要使用 System.Transactions 和 TransactionScope。这将要求我在数据库服务器和应用程序服务器上设置 Microsoft 分布式事务协调器 (MSDTC)。
我看了高低,找不到任何描述逐步设置 MSDTC 和相互身份验证的文章(包括配置防火墙设置和 MSDTC 设置。)完全记录(除非你能找到我关于如何设置它的非常好的 MSDN 文章。)
使用 MSDTC 是完成工作的唯一方法吗?
如果是这样,我该如何正确配置它?
编辑:
- 我在所有机器上都使用 Windows Server 2003。
- 我有两个 SQL Server。一个是 SQL Server 2000,另一个是 2005。
- 我有一台 Oracle 服务器,它是 11g 版本
- 我们正在开发的应用程序有时必须以事务方式在所有三个数据库中更改/创建记录。
- 键盘和椅子之间不是问题。我们阅读了 MSDN 上有关如何设置有关 MSDTC 的所有内容的文章,但我们无法让 DTCPing 和其他测试应用程序正常工作。我们正在寻找详细说明该过程的分步文章。我不止一次遇到过 MSDN 文档,其中“省略”了执行某些操作的步骤。