достигнут максимальный размер пула c # SQL

#c# #sql #connection-pooling

#c# #sql #соединение-объединение в пул

Вопрос:

У меня есть простой цикл while, который проверяет базу данных на наличие вставок. Если он находится в цикле слишком долго, мой try catch выдает ошибку «достигнут максимальный размер пула». Итак, в нижней части цикла у меня есть соединение clearallpools() ; Но это все еще не решает проблему.

 while (!quit)
{
connection to database strings timeout=400

read from database


connection.clearallpools();
}
  

Комментарии:

1. Разбейте ваши инструкции на пакеты. Достижение максимального размера пула — это очень плохо.

Ответ №1:

Вероятно, вы не закрываете свои соединения…возможно, вы захотите использовать

 while(!quit){
    //do something here
    using(var connection = GetMyConnection()){
        //do your db reads here
    }
    //do validations and something more here
}
  

Это гарантирует, что ваши соединения будут удалены / закрыты должным образом.

Кроме того, вам не нужно очищать свои пулы.

Объекты SqlConnection / DbConnection реализуют IDisposable. Возможно, вы захотите пройти через эти

Ответ №2:

Скорее всего, вы продолжаете открывать новые соединения в цикле.

Над циклом откройте инструкцию connection is using и затем используйте ее в цикле. Также обратите внимание на удаление clearallpools :

 using(create new connection)
{
    while (!quit)
    {
    connection to database strings timeout=400

    read from database


    // connection.clearallpools(); REMOVE THIS!!!!
    }
}
  

Ответ №3:

Вы исчерпываете пул соединений. После каждого чтения вы должны закрывать соединение, которое вернет его обратно в пул.