System.Transactions
If you are in an existing transaction and within a Sql CLR Object, when you create a connection to a remote server, you will automagically be promoted to a distributed transaction and use the System.Transactions namespace. if you don't open a connection to a remote server, a distributed transaction is not created and you don't need to worry about its overhead. Much sweeter than the COM+ way of you either get a distributed transaction whether you need it or not.
Wally