You know, if you took out the transaction the answer would be exactly the same? How then is this a transaction? 🙂
Still say having SET XACT_ABORT OFF as the default is broken, buggy behavior. Because it means *it is not a transaction*.
Growl.
And please don't quibble that "it acts like a transaction sometimes and sometimes it doesn't". That's not a transaction, folks.