Visual Studio Server Explorer не закрывает процесс sqlsrvr.exe - PullRequest
0 голосов
/ 09 марта 2019

У меня есть эта «проблема» в течение долгого времени, и мне действительно интересно, это только я или есть ли способ предотвратить следующее:

ОБНОВЛЕНО В Visual Studio при использовании обозревателя сервера в базе данных .mdf в проекте первого подхода в Entity Framework Code каждый раз, когда я открываю базу данных вручную, чтобы просмотреть данные определенных таблиц (нажимая кнопку Показать данные таблицы), кажется, что даже когда Я закрываю соединение так:

enter image description here

соединение с базой данных остается каким-то образом открытым в фоновом режиме. Я получаю сообщение об ошибке «... База данных в настоящее время используется ...», если впоследствии требуется выполнить отладку, после закрытия подключения, даже при перезапуске решения.

Когда я закрываю все процессы sqlservr.exe в диспетчере задач, который делает свое дело.

Обратите внимание, что это локальное решение и локальная база данных (.mdf), которые я использую для тестирования. Ничто или никто другой не использует это решение.

Я совершенно уверен, что такое поведение не должно быть правильным? Что я делаю не так или что я могу сделать, чтобы не иметь такого поведения, если это не по умолчанию?

Заранее спасибо за любые отзывы!

1 Ответ

1 голос
/ 10 марта 2019

Перемещение комментария к ответу, поскольку это решило вопрос, заданный Дмитрием.

Включите флаг «Объединение в пул» в строке подключения, установленной в false:

Pooling=False

Однако , это то, что я бы не рекомендовал в продуктивной среде:

Пул соединений уменьшает количество раз, когда новые соединения должны быть открыты. Пулер поддерживает право собственности на физическое соединение. Он управляет соединениями, поддерживая набор активных соединений для каждой данной конфигурации соединения. Всякий раз, когда пользователь вызывает Open для соединения, диспетчер ищет доступное соединение в пуле. Если пул соединения доступен, он возвращает его вызывающей стороне, а не открывает новое соединение. Когда приложение вызывает Close для соединения, диспетчер возвращает его в объединенный набор активных соединений, а не закрывает его. Как только соединение возвращается в пул, оно готово для повторного использования при следующем вызове Open. (...) Пул соединений с сервером SQL (ADO.NET)

...