Mam aplikację, która używa SqlConnection.ClearAllPools
do zamknięcia wszystkich połączeń przed upuszczeniem bazy danych.SqlConnection.ClearAllPools, co zostało wyczyszczone?
Istnieje przypadek, w którym połączenie nadal istnieje. To połączenie zostało utworzone w innej domenie aplikacji.
Zastanawiam się, które połączenia są zamknięte przez SqlConnection.ClearAllPools
?
- Tylko połączenia otwarte przez proces wywołujący (lub AppDomain)?
- Wszystkie połączenia otwarte przez to urządzenie?
- ...?
Dzięki. Dokumentacja w ogóle o tym nie mówi. Wiem, że istnieje pula dla każdej konfiguracji i każdej aplikacji. Ale ClearAllPools to liczba mnoga i czyści kilka pul. Ale które? Nie może polegać na konfiguracji, ponieważ jest to metoda statyczna bez żadnych argumentów. Ale czy to zależy od domeny procesu/aplikacji? –
@Stefan, tak, dokumentacja nie jest jasna co do tej metody. W rzeczywistości może być wiele pul na domenę aplikacji, jeśli używa ona różnych ciągów połączeń. Po przekazaniu ciągu połączenia do 'SqlConnection' wewnątrz domeny aplikacji to połączenie zostanie narysowane z puli powiązanej z tą pulą połączeń lub zostanie utworzona nowa pula, jeśli nie istnieje. Dlatego istnieje również metoda 'SqlConnection.ClearPool', która pozwala wyczyścić pulę powiązaną tylko z danym połączeniem. Więc zasadniczo pula jest za ciąg połączenia/domeny aplikacji. –
Pewnie, to część, którą mogłem znaleźć w dokumentacji. Ale nie mogłem wywnioskować z tego "zakresu" 'ClearAllPools'. –