Windows Server 2008 blocks DTC

Damir Dobric Posts

Next talks:

 

    

Follow me on Twitter: #ddobric



 

 

Archives

Typical distributed application will have some kind of server/service and some database. For example, imagine there is an ASP.NET based application which has SQL Server as back-end. Although  the application works fine and all tests has passed successfully, you may figure out that the same app does not work on Windows Server 2008 machine.
In a case of Web Application, which tries to perform some transaction (even very simple one) the user will have to wait in front of his/her browser until the request timeout is reached. While user is awaiting without of any knowledge what is going on behind the stage, the SQL Server in back-end block running transaction.

Following picture shows, that the SQL Server is running in a transaction.

image As As you can see process 51 has opened transaction. The bad thing is that Windows Server 2008 by default blocks Distributed Transaction Coordinator and transaction will never end.
While SQL tries to ends the transaction (commit or rollback) the browser request will time out. After some time the transaction running will time-out too and the process 51 will become free. It means the SQL batch which caused the transaction will be canceled.

To solve this problem you can take typical developer approach and stop the firewall. Or you should take the admin approach  (which is the right one) and enable required DTC rules.
Following picture show three Win. Srv. 2008 firewall rules, which will allow DTC protocol when enabled.
image


Posted Aug 14 2008, 11:12 PM by Damir Dobric

Comments

alehmann wrote re: Windows Server 2008 blocks DTC
on 08-19-2008 15:42

To access Component Services control panel in windows vista you must use this command line:

%windir%\system32\comexp.msc

There is no entry in the control panel or the administration.

developers.de is a .Net Community Blog powered by daenet GmbH.