问题标签 [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 投票
1 回答
1569 浏览

transactions - 调试时判断事务是否为DTC事务

在.Net中,有没有办法在调试时确定环境事务是否为DTC事务。我调查了 SqlConnection 类成员,但我一无所获。谢谢。

0 投票
2 回答
57470 浏览

sql-server - 如何修复分布式事务管理器 (MSDTC) 已禁用错误

我们正在使用 ASP.NET 的事务范围功能来管理分布式事务,为此我们需要通过以下链接启用分布式事务:
合作伙伴事务管理器已禁用其对远程/网络事务的支持

它适用于 SQL Server 2005 和 Windows Server 2003,但是当涉及到 Windows Server 2008 服务器和 SQL Server 2005 时,我们会收到以下错误,但我们仍然遵循上面链接中提供的相同步骤:

Windows Server 2008 + SQL Server 2005 + 分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。

0 投票
1 回答
879 浏览

sql-server - 如果其中一个数据库是只读的,是否会发生分布式事务升级?

我们正在执行从源数据库到目标数据库的导入过程。我们需要以自动化的方式频繁地运行这些导入。

源位于与目标不同的服务器上。两者都是 MS SQL 2008。我们使用 Linq2SQL 访问源,使用自定义数据层访问目标。我们从不修改源数据库(尽管我们目前不将其恢复为只读)。但是,现在当我们在 transactionScope 中运行导入时,整个事务被提升为 DTC,因为我们访问了不同服务器上的两个 DB。

如果我们将源数据库设为只读,它还会这样做吗?

在这种情况下如何避免 DTC 促销还有其他建议吗?

Remus 回答的后续问题(再次感谢):

跟进#1:我的导入例程的结构是它从源导入记录并在目标中创建新记录。像这样:

您是说用 RequiresNew 包围 TransactionScope 中的 Linq2Sql 位吗?或者,我想,因为我真的不关心源头的事务,我可以用带有 Suppress 的 TransactionScope 来包围该连接是否包含在任何事务中,对吧?

跟进#2:

当你说“打开第二个连接,即使是同一个数据库” - 我已经阅读了几个关于这个的变体:

  1. “第二个连接” == Connection 对象的第二个实例,即使它完全相同的连接字符串
  2. “第二个连接” == 连接到单独的资源管理器和 SQL2005 之前,这意味着与上面的 1 相同,但在 SQL2008 上,这意味着一个单独的实例(即同一实例上的两个 DB 不会被提升)
0 投票
0 回答
1009 浏览

authentication - 如何在 MSDTC 上配置相互认证?

一般身份验证(作为特殊情况的相互身份验证)如何在 MSDTC 中工作以及如何在 MSDTC 上配置相互身份验证?

我有一个自定义应用程序(归档解决方案),一个 Windows 服务,它在配置的时间从在线数据库中获取数据并转储到后端归档数据库(理想情况下,在线和后端数据库位于不同的机器上)。

我正在使用 TransactionScope,并在客户端和主机上配置了 DTC,没有进行身份验证,它工作正常。但是,我们的客户端要求我们不要使用无身份验证模式,并为 MSDTC 设置一些身份验证。我决定使用相互身份验证,虽然我不太确定它是如何工作的以及如何配置它?任何帮助,将不胜感激。

0 投票
0 回答
274 浏览

entity-framework - MSDTC 配置自动化

我们正在通过 .NET 3.5 使用大多数新技术开发大规模业务应用程序,并且除了自动使用 System.Transaction 和 MSTC 的事务管理之外,我们还在架构中使用 EF 作为 DataAccessLayer。我们需要通过 ClickOnce 方法为每个客户组织中的 300 多个最终用户部署此应用程序,但是我们无法自己完成此任务或培训最终用户配置他们的 MSDTC 设置以支持 System.Transaction,真的不可能对于最少 200-300 个用户,最多 500 或 600 个用户,因此我们需要一个解决方案来自动配置这些客户端 MSDTC 引擎,并通过在 ClickOnce 部署、安装包等中自动化来提供此解决方案。有什么办法吗,

任何帮助或解决方案将不胜感激。

0 投票
1 回答
8688 浏览

sql - 在线程环境中,分布式事务如何处理与同一个数据库的多个连接?

我正在尝试确定分布式事务中多个数据库连接的行为。

我有一个长时间运行的进程,它产生一系列线程,然后每个线程负责管理其数据库连接等。DependentTransaction所有这些都在事务范围内运行,并且每个线程都通过一个对象登记在事务中。

当我并行处理这个过程时,我遇到了一些问题,即似乎有某种块阻止查询在事务上同时执行。

我想知道的是事务协调器如何处理来自多个连接到同一个数据库的查询,以及是否建议跨线程传递连接对象?

我读过 MS SQL 每个事务只允许一个连接,但我显然能够在同一个事务中创建和初始化多个到同一个数据库的连接。在打开连接时,如果没有“另一个会话正在使用的事务上下文”异常,我根本无法并行执行线程。结果是连接必须等待执行而不是同时运行,最后代码运行完成,但由于这个锁定问题,线程化应用程序没有净收益。

代码看起来像这样。

编辑

我的测试最终表明这是无法做到的。即使有多个连接或使用同一个连接,事务中的所有请求或问题都按顺序处理。

也许他们将来会改变这种行为。

0 投票
3 回答
13779 浏览

entity-framework - 如何在没有 MSDTC 的情况下在 TransactionScope 中运行两个实体框架上下文?

这个问题在这里的一个简单示例中不容易重现,但想知道是否有人有任何经验和提示,这里是问题:

  • 使用实体框架
  • 在应用程序中有很多点,其中 (1) 数据被写入某个实体表,例如客户,(2) 数据被写入历史
  • 这两个动作都使用实体框架,但是,它们使用不同的上下文
  • 这些动作需要同时在一个事务中:即如果一个不能写,另一个不应该写,等等。
  • 我可以用 TransactionScope 包装它们,

像这样:

但这给了我:

Microsoft 分布式事务协调器 (MSDTC) 对网络事务禁用。

我们的数据库管理员告诉我MSDTC被选择禁用并且无法安装

因此,我正在尝试使用 MetadataWorkspace 创建自己的 EntityConnection 进行更改,并认为每个上下文都将使用相同的 EntityConnection。然而,事实证明,试图让它工作几乎是不可能的,例如,目前我继续得到上述错误,即使理论上两个上下文都使用 EntityConnection。例如,很难理解实体框架在哪里/为什么需要 MSDTC。

以前有没有人走这条路,有经验或代码示例可以分享?

0 投票
0 回答
595 浏览

c# - TransactionScope 在某些地方有效,而在其他地方无效

在 Windows Server 2003 上使用 ASP.NET 3.5、Linq to SQL、SQL Server 2005。在本地 XP SP3 上运行 VS 2008。

我们需要能够在事务中包装插入、更新和删除。当我们第一次尝试用 包装代码块时using(var trans = new TransactionScope()) { ...; trans.Complete(); },我们得到了一个适当的异常,告诉我们需要为远程事务启用网络访问。 我们这样做了,事情开始按我们预期的方式进行。

快进到今天。我们的应用程序中有一个很少使用的部分也接受了 TransactionScope 处理。尽管事务在我们代码库的所有其他部分都可以正常工作,但我们今天发现这个很少使用的部分正在抛出与以前相同的“网络访问”异常:

分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。http://img101.imageshack.us/img101/5480/msdtcnetworkaccesserror.jpg

这是导致异常的代码:

如果您有任何建议,我们将不胜感激。让我知道我是否可以解释更多。提前致谢!!

0 投票
1 回答
2937 浏览

.net - MSDTC 将事务推广到分布式的可靠测试?

如何可靠地检查 MSDTC 是否已将事务提升为分布式事务?

这是在 .net 中使用 TransactionScope 时。

目前,一位同事正在通过关闭他的机器上的协调器来测试这一点——如果抛出异常,这将作为尝试促进事务的证据。这是一个有效的测试吗?

0 投票
1 回答
1123 浏览

vb.net - 与 LINQ-SQL Server 和 TransactionScope 一起挂起

当程序尝试访问水果数据库时,我遇到了挂起。我已经在我的开发计算机和 SQL Server 服务器上启用了网络访问 MSDTC。

代码:(请原谅代码着色......所以误解了我的 VB .NET)

编辑:

我又挖了一点,结果发现问题出在 LINQ 行。当我尝试使用 LINQ to SQL Visualizer 查看它时,我收到以下错误:

我还编辑了 LINQ 语句以更接近我的真实代码。

最终编辑:我尝试使用普通的 SqlConnection 而不是“thingies as New ThingiesDataContext”,但问题仍然存在。

TransactionScope 似乎无法处理同一事务中的多个 SQL 连接。

微软官方笔记

SQL Server 不支持并行事务。

来自 MSDN:http: //msdn.microsoft.com/en-us/library/bb896149.aspx