Nieobsługiwany wyjątek: System.InvalidOperationException: Czas upływuje. Czas wygasł, ale połączenie nie zostało jeszcze odebrane z puli. Może to wynikać z faktu, że wszystkie połączenia basenowe są już użytkowane, a maksymalny rozmiar basenu został osiągnięty.
Może się to zdarzyć, ponieważ wszystkie połączenia basenu są już używane i osiągnięty jest maksymalny rozmiar basenu.
Rozwiązanie:
Pierwszą rzeczą, którą trzeba zrobić, jest zamknięcie połączenia zaraz po jego użyciu. Jeśli połączenie nie zostanie zamknięte, to jest zapisywane do puli połączeń, a GC jest znany jako zniszczony. W tym przypadku myślisz, że pula połączeń nie osiągnęła maksymalnej wartości, ale w rzeczywistości pula połączeń osiągnęła maksymalną wartość; po drugie, możemy użyć Maksymalnego Rozmiaru Puli = N w ciągu połączeń; aby dynamicznie rozszerzać maksymalną liczbę połączeń w puli połączeń.
Ilustrują:
To znaczy, jeśli wartość maksymalnego rozmiaru puli nie jest określona w connectionString,Wtedy maksymalna wielkość puli=100Jeśli liczba odwiedzających bazę danych wynosi 101, powyższy błąd pojawi się, jeśli po oczekiwaniu na czas ustawiony przez SqlConnection.ConnectionTimeout (domyślnie 15 sekund) nadal nie ma dostępnego połączenia.
Gdy ustawiamy na:
Jeśli liczba odwiedzających łączących się z bazą danych jednocześnie wynosi 513, powyższy błąd wystąpi, jeśli po oczekiwaniu na czas ustalony przez SqlConnection.ConnectionTimeout (domyślnie 15 sekund) nadal nie ma dostępnego połączenia.
|