2015-04-26 2 views
-2

У меня есть вопрос о закрытии соединения в C#. Компания имеет приложение, в котором данные автоматически передаются из приложения в БД. Я хотел бы создать собственное приложение ASP + C#, которое будет использовать в качестве источника для независимого отчета выбор из данных (таблица DB, заполненную из приложения компании). Мой вопрос: может ли закрытие подключения в моем приложении повлиять на второе (компания, очень важное приложение?) - запись будет отсутствовать в db из-за тесного соединения? или любые другие проблемы?Закрытие соединения с DB

+2

Закрытие соединения не должно влиять ни на какие другие соединения. – jfin3204

ответ

5

Нет, все будет в безопасности, если вы закроете его должным образом. Я рекомендую вам всегда использовать конструкцию using. Он будет автоматически преобразован в триггерные и закрытые ресурсы.

5

Это полностью зависит от вашего прецедента, если вы открываете и оставляете открытыми сотни и сотни, если не тысячи и тысячи пустых подключений, SQL Server постепенно начнет иметь некоторую деградацию производительности.

Подумайте об этом, поскольку вы спрашиваете своего босса за что-то, и вы говорите: «Босс, мне нужно задать вам вопрос». Но вы напоминаете ему сотни и тысячи раз в секунду: «Мне нужно задать вам вопрос». Все, что он пытается сделать, постепенно начнет терять производительность, поскольку он должен обработать тот факт, что вам придется задать ему вопрос. Аналогично Sql Server. Имейте ввиду, на данный момент у вас нет на самом деле задал ваш вопрос.

Если СУБД Microsoft SQL Server, обратитесь к этой статье: https://msdn.microsoft.com/en-us/library/ms187030.aspx

SQL Server позволяет максимум 32767 подключений пользователей.

Если вы откроете 32k соединения с сервером, две вещи, которые, скорее всего, произойдет:

  1. Ваш DBA придет к вам и сказать «WTF мат?» к тому времени, когда вы приблизитесь. Возникнет вероятный аргумент, в результате которого вы и администратор базы данных, вероятно, закончите кричать и создать сцену.
  2. Ваша СУБД достигнет максимального предела соединения, а другая все будет дергаться.

Не говорю, что все это будет происходить, что требует от вас, чтобы открыть 32,767одновременно соединения, но это как раз идет дальше доказать, что вы должны открыть/закрыть по мере необходимости. Кроме того, если ваше приложение использует пул соединений, и вы открываете соединения n, а лимит пула (отдельно от SQL Server - заметьте) - n, вы просто прекратили открывать свое приложение.

Вообще говоря, вы должны открытые ваши соединения как конце как можно, и близко их как рано насколько это возможно.

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