Try adding the keyword "DISTRIBUTED" to your begin transaction statement.
IE:
BEGIN DISTRIBUTED TRANSACTION
...
This will change the way the transaction locks data. I'm pretty sure I had that working with SQL 2000. It does take the correct server setup to get working though.
Gary Johnson
Sr Database Engineer