Questo probabilmente non è un problema con il tuo codice. È un bug di SQL Server. Hanno avuto un problema simile in SQL Server 2005. È successo solo in condizioni giuste, quindi pochissime persone l'hanno visto e quelli che lo hanno fatto erano molto confusi.
Detto questo, ecco alcune cose da controllare che hanno funzionato per altri con lo stesso problema:
- Cerca lettori di dati che non siano chiusi. Assicurati di eseguiremyReader.Close() dopo aver letto le righe desiderate. Molte persone semplicemente ballano senza chiudere.
- Utilizza la classe nativa SqlTransaction invece di OleDbTransactions ovunque possibile.
- Guarda le tue transazioni. Assicurati di eseguire il commit/rollback in modo pulito prima di chiudere la connessione.
- Utilizza Connection.BeginTransation anziché Connection.BeginDbTransaction