2015-02-25 1 views
0

Я получаю эту ошибку, когда пытаюсь получить все имя пользователя из производственной скопированной локальной базы данных, я думаю, это из-за не закрытия соединения должным образом, но я не знаю, как это сделать. Я использую Microsoft Enterprise Library, муравьиную мысль или комментарий об этом?Ошибка SQL Server при потере сотен записей

Timeout expired. The timeout period elapsed prior to 
obtaining a connection from the pool. This may have occurred 
because all pooled connections were in use and max pool size was reached. 

это mothod, который получает имя пользователя и пароль и создает ошибку.

private Model.UsernameandPass GetUsernamePass(string AccountNumber) 
    { 
     Model.UsernameandPass model = null; 

     string myConnection = System.Configuration.ConfigurationManager.ConnectionStrings[connectionName].ToString(); 
     SqlDatabase db = new SqlDatabase(myConnection); 

     using (DbCommand command = db.GetStoredProcCommand("Get_TheUsernamePassWordFromProduction")) 
     { 
      db.AddInParameter(command, "AccountNumber", DbType.String, AccountNumber); 
      var result = db.ExecuteReader(command); 

      try 
      { 


       while (result.Read()) 
       { 

        model = new Model.UsernameandPass(); 

        model.Username = result.GetString(1); 
        model.Password = result.GetString(2); 
       } 

      } 

      catch (Exception ex) 
      { 


      } 


     } 
     db = null; 
     return model; 
    } 

Я получаю сообщение об ошибке в этой строке после того, как программа запускается некоторое время.

var result = db.ExecuteReader(command); 
+0

Похоже, что вы создаете несколько соединений и не закрываете их и в конечном итоге превышают размер вашего пула. Положите инструкцию using вокруг кода соединения или у вас есть, наконец, закрыть соединения. Попробуйте http://stackoverflow.com/questions/4717789/in-a-using-block-is-a-sqlconnection-closed-on -Возвращение или исключение- – SoulTrain

ответ

0

Вы получаете эту ошибку, потому что соединение не может быть установлено, не только, потому что они не закрыта должным образом. Проверьте разрешения для пользователя, с которым вы пытаетесь пройти аутентификацию. Также обязательно звоните .open()/.close(), если/если вы программно открываете/закрываете соединения.

Check this link. Вы можете увеличить размер пула или проверить длительные запросы.

Смежные вопросы