Detta är troligen inte ett problem med din kod. Det är en bugg i SQL Server. De hade ett liknande problem i SQL Server 2005. Det hände bara under förhållanden som var helt rätt, så väldigt få människor såg det någonsin och de som gjorde det var mycket förvirrade.
Med det sagt, här är några saker att kontrollera som har fungerat för andra med samma problem:
- Leta efter DataReaders som inte är stängda. Se till att du gör minReader.Close() efter att du har läst raderna du vill ha. Många människor bara rockar utan att stänga.
- Använd den inbyggda SqlTransaction-klassen istället för OleDbTransactions där det är möjligt.
- Titta på dina transaktioner. Se till att du genomför/rullar tillbaka rent innan du stänger din anslutning.
- Använd Connection.BeginTransation snarare än Connection.BeginDbTransaction