We have a desktop application that called a WebService. The WebService takes the data passed to it from the desktop app and pass this data to PostTrx.DLL along with a connection string. PostTrx.dll then creates a connection, opens it and creates a Transaction. Several tables are updated within the transaction and some other tables are read outside the transaction. At the end the transaction is either committed or rolled back. All works well when used in a single user environment. when 2 or more desktop all his the WebService at the same time it falls apart. one of the 2 or both processes will get a message saying "The SqlCommand is currently busy Open, Fetching". It's like they are sharing the same connection.