Anselmo, na realidade o problema é com o driver OLEDB, que neste caso para transações remotas precisam que você inicia a transação com SET TRANSACTION ISOLATION LEVEL REPEATABLE READ OR SERIALIZABLE, pois é necessário garantir que no momento da atualização não existe mais ninguém alterando os registros que estão sendo manipulados.
Coloque no início da sua transação SET TRANSACTION ISOLATION LEVEL e também BEGIN DISTRIBUTED TRANSACTION, isso permite você garantir que em caso de falha o MSDTC possa realizar o Rollback em todos os envolvidos na transação.
Qualquer dúvida, retorne.
Abraços,
Rodrigo Fernandes