Ugh. We just learned a nasty truth about SQL Server's transaction handling, so here's some Google-juice for others with a similar problem. In our code, we were using SqlTransaction objects to maintain a transaction while updating the database.