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.
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.
Posted
Aug 14 2008, 11:12 PM
by
Damir Dobric