To prawdopodobnie nie jest problem z Twoim kodem. Jest to błąd w SQL Server. Podobny problem mieli w SQL Server 2005. Zdarzył się on tylko w odpowiednich warunkach, więc bardzo niewiele osób kiedykolwiek go widziało, a ci, którzy to widzieli, byli bardzo zdezorientowani.
To powiedziawszy, oto kilka rzeczy do sprawdzenia, które zadziałały dla innych z tym samym problemem:
- Poszukaj czytników danych, które nie są zamknięte. Upewnij się, że robisz myReader.Close() po przeczytaniu żądanych wierszy. Wiele osób po prostu szaleje bez zamykania.
- Użyj natywnej klasy SqlTransaction zamiast OleDbTransactions, gdziekolwiek jest to możliwe.
- Spójrz na swoje transakcje. Upewnij się, że zatwierdzasz/wycofujesz się przed zamknięciem połączenia.
- Użyj Connection.BeginTransation zamiast Connection.BeginDbTransaction