- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以一种模糊的方式了解常规 ACID 事务的工作原理。您在数据库上执行一些工作,直到设置了某种提交标志才确认工作。提交部分基于一些基本假设(例如单个磁盘 block 写入是原子的)。如果发生灾难性错误,您可以在恢复阶段清除未提交的数据。
分布式事务如何工作?在我读过的一些 MS 文档中,您可以以某种方式跨数据库和文件系统(除其他外)执行事务。
这项技术可以(并且可能)用于安装程序,您希望程序完全安装或完全不存在。您只需在安装程序启动时开始事务。接下来,您可以连接到注册表和文件系统,进行定义安装的更改。工作完成后,只需提交,如果由于某种原因安装失败,则回滚。这个神奇的分布式事务协调器会自动为您清理注册表和文件系统。
两个不同的系统怎么可能以这种方式进行交易?在我看来,总是有可能使系统处于不一致的状态,即文件系统已提交其更改而注册表没有。我认为在 MSDTC 中甚至可以通过网络执行事务。
我已阅读 http://blogs.msdn.com/florinlazar/archive/2004/03/04/84199.aspx ,但感觉只是解释的开始,步骤4应该大大扩展。
编辑:从我收集到的 http://en.wikipedia.org/wiki/Distributed_transaction ,它可以通过两阶段提交( http://en.wikipedia.org/wiki/Two-phase_commit )来完成。读完后,我仍然没有 100% 理解该方法,似乎步骤之间有很大的错误空间。
最佳答案
关于“第4步”:
The transaction manager coordinates with the resource managers to ensure that all succeed to do the requested work or none of the work if done, thus maintaining the ACID properties.
public interface ITransactionParticipant {
bool WouldCommitWork();
void Commit();
void Rollback();
}
Commit()
给所有参与者的消息。如果任何参与者引发错误或超时,则整个事务将中止,并且个别成员将回滚。
关于transactions - 分布式事务如何工作(例如 MSDTC)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55878/
我的 ASP.NET Web 表单系统有问题。 它在我们的测试服务器上工作,但现在我们将其投入使用,其中一台服务器位于 DMZ 内,而 SQL 服务器位于该区域之外(尽管仍然在我们的网络上 - 尽管是
我现在面临 MSDTC 事务超时问题。由于历史原因,我们仍然有很多遗留代码通过 C++ ODBC 运行 DB 操作,并且连接默认升级为 MSDTC。问题是当我尝试执行一个超过 1 分钟的冗长操作时,事
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我有一个相当大的应用程序,它使用 MSDTC。我应该打开多少个端口?有什么办法可以确定吗? 编辑:我知道 什么 我需要打开的端口,我不知道多少我需要。 最佳答案 我想 Migol 想知道 RPC dy
如果我设置了两台 Windows Server 2008 r2 机器,我可以让分布式事务仅在一个方向上工作。当我可以使 DTCPing 成功工作时,DTC 正在工作。不过,DTCPing 仅在我从一台
我的应用程序中曾经遇到过以下异常, Unable to get the address of the distributed transaction coordinator for the serve
我在域中的计算机上运行的应用程序使用TransactionScope(依赖于MS DTC)。 SQL Server在域中未包含的计算机上运行。如何在域中的计算机和未在Windows域中运行的计算机上启
我有一个每天检索数据并将其存储到数据库中的应用程序。直到最近,此应用程序一直驻留在与 SQL 服务器相同的机器上,但由于一些所需外围设备的硬件问题,它已被移动到运行 Windows XP 的单独机器上
问题是我们在使用 TransactionScope 的独立网络服务器(Windows 2003 SP2 - 机器名称是 TESTAPP,可以在下面的日志中看到)上有一个网站。 SQL Server 2
我有一个带有两个表的 SQL Server 2008 数据库,一个使用 TransactionScope 的 .NET 4.5 应用程序,对数据库有两个查询,每个都使用它们自己的独立连接,共享一个单个
那么,MSDTC 是否会消耗系统(服务器和应用程序)的大量资源? 过去,我编写了几个依赖 MSDTC 进行数据库事务的大型 Web 应用程序。我从来没有调查过服务器上会有多少消耗。 目前,我正在使用
我有一个 WinForms/WCF/SQLServer 应用程序,我正在尝试像这样使用 MSDTC 事务: using System.Transactions; // ... var transOpt
我收到错误: communication with the underlying transaction manager has failed 当我尝试从 visual studio 2010 运行我
我工作的公司想在我们支持 SQL Server 的应用程序中使用 Always on 可用性组架构。我们有 3 个直接安装的数据库,其中一个按配置分区,我们目前使用 MSDTC 来协调这三个数据库之间
我注意到非常简单的分布式事务在第一次运行时需要很长时间(3-4 秒)才能完成。但是如果再次调用相同的事务范围,速度会快得多(30 毫秒)。似乎 MSDTC 在一个小时后进入休眠状态。一小时后,下一个要
我有两个存储库指向同一个 SQL Server 2008 R2 (10.50.2550.0) 数据库。一个存储库基于 Entity Framework ,另一个使用常规 SqlConnection。我
我以一种模糊的方式了解常规 ACID 事务的工作原理。您在数据库上执行一些工作,直到设置了某种提交标志才确认工作。提交部分基于一些基本假设(例如单个磁盘 block 写入是原子的)。如果发生灾难性错误
我对事务和 msdtc 如何协同工作有一些基本的困惑。 我有一个基本的服务器/客户端 winforms 应用程序。该应用程序使用transactionscope来封装在sql服务器上执行的多个sql命
在我们的项目中,我们使用 TransactionScope 来确保我们的数据访问层在事务中执行它的操作。我们的目标是不要求在最终用户的计算机上启用 MSDTC 服务。 问题是,在我们一半的开发人员机器
当我们需要在我们的应用程序中进行数据库访问时,我们使用以下模式: 为了查询,我们有一个带有方法 CreateOpenConnection 的静态工厂类这只不过是 new SqlConnection(m
我是一名优秀的程序员,十分优秀!