Phase0 in .Net System.Transactions

In a previous post ( I talked about Phase0 and some useful things it allows you to do. Although not referred as Phase0, phase 0 features are available in .Net System.Transactions in two forms. Actually in three, but the third is a derivate. I will make many references here to the previous post on Phase0…


Our Own Forum is Now Live! Please Join Us at the "Transactions Programming Forum"

I’m really happy to announce that our own forum, dedicated to transactions in Windows and .Net is now live at The RSS feed for the forum is I hope that by having a forum that is dedicated to Transactions technologies we can build a better channel for our customers to get quick and…


Dedicated Site for Transactions on

In an effort to have a common place for all the transactions technologies we provide (and we started to have a good number of technologies that continues to grow), we have put together a webpage on dedicated to transactions. The address is:


MSDTC: The Magic of Phase Zero (Phase0) – Or – When Using 2PC Transactions Is Not Enough

The most known technique of implementing distributed transaction is the “two-phase commit” (2PC). Here is a quick summary of how this technique works:   – Active phase: After the transaction is created and before the “commit” message is issued by the creator, the transaction is in the “active” state. During this phase, resource managers can “enlist” and become…


SQL Server 2005 with COM+/DTC is first in a new TPC-C result

The new results posted by Dell running SQL Server 2005 with COM+/DTC tops TPC-C by Price/Performance with .99 US$ price/tpmC: I can’t wait to see some results with SQL Server 2005 combined with System.Transactions and our new “promotable transactions” (


Fast transactions with System.Transactions and Microsoft SQL Server 2000

The simplest way to use transactions today with Microsoft SQL Server 2000, using .Net Framework 2.0, is as follows:        static void Main(string[] args)        {            using (TransactionScope ts = new TransactionScope())            {                SqlConnection sqlConnection = new SqlConnection(“connectionString”);                sqlConnection.Open();                SqlCommand sqlCommand = new SqlCommand(“INSERT INTO …”, sqlConnection);                sqlCommand.ExecuteNonQuery();                sqlConnection.Close();                 ts.Complete();            }        } If you really…


DTCPing: Troubleshooting MSDTC Connectivity Issues

In today’s world, security hardening is causing many headaches to software developers and admins. Especially when you have an application that needs to go beyond the boundaries of the local machine. MSDTC is a distributed app by definition and thus, getting transacted app that uses MSDTC to work in your network is not as easy…


Transactions Sessions at PDC 2005

If you are at PDC this year, don’t forget to attend the sessions related to transactions. An easy way to find these sessions is to go to and search by Keyword=”transaction”.   I especially recommend the session called “FUN320 – Windows Vista & “Longhorn” Server: Improving Reliability Using System.Transactions and the Transactional NTFS and…


WS Specs for Transactions Updated

The WS specifications related to Transactions (WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity) have just been updated. They are available at


Writing a resource manager that supports promotable transactions (or Promotable Single Phase Enlistment aka PSPE) in System.Transactions

A key feature that targets performance in System.Transactions is the Promotable Single Phase Enlistment. It allows a durable resource manager (RM) to host and “own” a transaction that can later be promoted to a distributed transaction (or MSDTC transaction) if necessary. This specific resource manager usually has its own internal non distributed transactions and it…