Есть ли способ закрыть все соединения в пуле для провайдера SqlClient - PullRequest
2 голосов
/ 24 декабря 2009

Я хотел бы закрыть все незанятые соединения в пуле соединений SqlClient. Есть ли документированный метод для этого?

Проблема заключается в том, что в рамках обычной обработки этого приложения (проводка тестирования) мне нужно удалить базу данных и воссоздать ее в начале каждого теста сценария. Очевидно, я не могу удалить базу данных с активными соединениями (активными с точки зрения Sql Server, а не с клиентом)

Ответы [ 2 ]

1 голос
/ 24 декабря 2009

В общем, нет. Конкретные поставщики базы данных могут предоставить способ сделать это. SqlClient предоставляет аналогичную функцию через SqlConnection.ClearPool и SqlConnection.ClearAllPools - но они не закрывают никаких открытых соединений, они просто очищают соединения, которые были возвращены в пул.

0 голосов
/ 24 декабря 2009

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

FWIW, я не верю, что есть способ сделать это последовательно для всех провайдеров, но исходя из того, что я упомянул выше, не нужно , чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...