问题标签 [msdtc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
247697 浏览

sql-server - 如何在 SQL Server 上启用 MSDTC?

这甚至是一个有效的问题吗?我有一个使用 MSTDC 的 .NET Windows 应用程序,它抛出异常:

System.Transactions.TransactionManagerCommunicationException:分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 进行网络访问---> System.Runtime.InteropServices.COMException (0x8004D024):事务管理器已禁用对远程/网络事务的支持。(来自 HRESULT 的异常:0x8004D024)在 System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize,Byte[] propgationToken,IntPtr managedIdentifier,Guid& transactionIdentifier,OletxTransactionIsolationLevel&isolationLevel,ITransactionShim&transactionShim)......

我按照Kbalertz 指南在安装了应用程序的 PC 上启用了 MSDTC,但仍然出现错误。

我想知道这是不是数据库问题?如果是这样,我该如何解决?

0 投票
2 回答
1956 浏览

sql - 如何防止插入查询注册到分布式事务?

我在存储过程中有一个 SQL 插入查询,用于将行插入到链接服务器表中。

由于存储过程在父事务中被调用,因此此 Insert 语句尝试使用 DTC 将行插入链接服务器。

我想避免DTC 参与其中。

有什么方法可以让插入 SQL 语句忽略事务范围?

0 投票
4 回答
7849 浏览

sql - SQL Server、远程存储过程和 DTC 事务

我们的组织在大型机 Adabas 数据库中有很多基本数据。我们可以通过 ODBC 访问这些数据,并且 C# 已经使用 ODBC/Natural“存储过程”成功地查询/更新了它。

我们现在想做的是从 SQL Server 2005 存储过程中查询大型机表,将结果转储到表变量中,对其进行处理,然后将结果与本机 SQL 数据作为结果集连接起来。

当我们选择它时,从 SQL 执行 Natural proc 可以正常工作;但是,当我们将结果插入到表变量中时,SQL 似乎正在启动一个分布式事务,而这反过来又似乎对我们的连接造成了严重破坏。

鉴于我们没有执行更新,是否可以关闭此 DTC 升级行为?

有关正确设置 DTC 以与 DataDirect(以前的 Neon Systems)Shadow ODBC 驱动程序对话的任何提示?

0 投票
2 回答
10000 浏览

windows - DTCPing 和 DTCTester 有什么区别?

我以前用过 DTCTester 来诊断 MSDTC 问题。但是,我只是注意到 DTCPing 似乎在做同样的事情。这两者有什么区别?

据我目前所知,DTCPing 需要在客户端和服务器机器上运行,而 DTCTester 只需要从客户端运行。还有其他区别吗?

0 投票
6 回答
1944 浏览

sql-server-2000 - 我可以在 Nunit 中创建数据库死锁测试吗?

在这个 asp.net 中,我正在清理可能会发生死锁。我想确保代码正确处理它们,所以我正在尝试编写触发死锁的 NUnit 测试.....

DAO 按实体拆分。每个实体都有一组测试,它们被 Startup() 和 Teardown() 方法包围,这些方法创建一个事务范围,然后在测试完成后将其回滚。这对其他一切都很好,但对于死锁完全没用。

如何使用可以可靠复制的 TransactionScope 和 SQL2000(即涉及 MSDTC)设置和运行“死锁”测试?更多细节:我知道有一种情况,如果两个用户使用不同的、特定的数据值调用两个函数,那么可能会导致死锁。我怎样才能在 NUNIT 中模拟这个 - 并让死锁总是发生?

是的,我确实从“你为什么不首先阻止死锁发生”行动计划开始,但我无法控制可能发生死锁的代码 - 我只是调用函数,它们可以死锁.

0 投票
1 回答
1348 浏览

c# - 调用中止后的 MSDTC 和 Oracle 事务锁?

我在使用 MSDTC 和 Oracle 时遇到了问题。这是一个 .net 应用程序,我使用 TransactionScope 类来控制事务。

问题是,有时,如果事务回滚(在没有调用 scope.Complete 的情况下调用了 scope.Dispose),它会长时间处于“Aborting”状态,而不是释放锁定的记录。即使事务处于“Aborting”状态,当调用 Dispose 以中止事务时,它也会立即返回,因此线程不会卡住。

有谁知道什么会导致事务表现得像这样并在调用 abort 后保留锁?

谢谢

0 投票
1 回答
3002 浏览

.net - 如何确定 SqlConnection 是否被登记到 System.Transactions 的 tx 中?

默认情况下,当我们使用 System.Transactions 中的事务(为实例创建 TransationScope)时,所有 Sql 连接(System.Data.SqlClient.SqlConnection)(但对于 Oracle.DataAccess.OracleConnection 也不是如此)在打开时被登记. 这称为自动登记。不错的功能。但可以通过连接字符串的参数 (enlist=false) 将其关闭。在这种情况下,将不会征用正在打开的连接。但它可以稍后手动登记。所以我的问题是:对于某些给定的 SqlConnection 实例,我如何确定该连接是否被登记(进入 System.Transaction)。我可以查看参数的连接字符串。但这不会做,因为正如我所说的连接可以手动登记。

0 投票
1 回答
1700 浏览

sql-server - 两个 MS SQL Server 2005 之间的分布式事务

我需要在两个 MS SQL Server 2005 之间进行 DISTRIBUTED TRANSACTION,它会丢弃一个错误,即 NO ACTIVE TRANSACTION IS PRESENT 或类似这样的事情。DTCTESTER 程序丢弃事务无法完成的错误。btw 135 端口在防火墙上打开。

也许有人知道有什么问题,或者有什么建议?

0 投票
5 回答
20664 浏览

linq-to-sql - 针对 Sql Server 2000 的 TransactionScope 错误 - 合作伙伴事务管理器已禁用其对远程/网络事务的支持

我正在尝试针对我的 Sql 2000 数据库为我的 Linq-to-Sql 操作设置一个简单的事务。使用 TransactionScope 它看起来像这样:

但是,我不断收到以下错误:

合作伙伴事务管理器已禁用其对远程/网络事务的支持。(来自 HRESULT 的异常:0x8004D025)

但是,如果我使用传统交易设置交易,它可以正常工作。所以这很好用:

我想知道 TransactionScope 的幕后工作是否与我的第二个实现不同。如果没有,我不使用 TransactionScope 会失去什么?此外,有关导致错误的原因的任何指导也很好。我已经确认 MSDTC 正在 sql server 和我的客户端计算机上运行。

0 投票
3 回答
1179 浏览

.net - System.Transaction 隐式事务弄乱了我的其他连接

我正在尝试使用 System.Transaction.TransactionScope 创建一个事务来调用一些存储过程,但它似乎并没有自行清理。一旦事务完成(提交与否并且事务范围对象被释放),随后与数据库的连接将以可序列化的读取提交级别打开,而不是像通常那样进行读取提交。

我为每个调用打开和关闭一个连接(很好地关闭并返回到.NET 中的正常连接池),当我完成使用它进行事务处理时,我是否错过了一些显式重置连接的方法?我认为 System.Transaction.TransactionScope 背后的想法是隐藏所有复杂性。

所以我的代码如下所示:

我想这是正常的做法。但是,如果我查看 sqlserver profiler,我可以看到正在打开的连接

这会扰乱随后的非事务相关数据库活动,而且显然也没有那么快。我可以通过设置一个事务选项来明确地使用 ReadCommited 进行事务来解决这个问题,但在我看来,这不是此操作的理想行为。

我还尝试显式创建一个 Commitabletransaction 对象,创建显式新事务而不是使用环境事务,但仍然没有运气。

任何有关如何解决此问题的想法都将不胜感激,因为如果他们尝试使用 readpast 锁定提示,任何使用可序列化连接的调用都会引发错误。