There are several tools that can help you:
1. SQL Server 2005 Service Broker
2. Microsoft Biztalk Server
3. Distributed Transaction Coordinator that helps with linked servers, OPENROWSETs, updatable distributed views etc. You have to follow the systax exactly and use Begin Distributed Transaction statement:
BEGIN DISTRIBUTED { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] [ ; ]