Объединение в пул соединений .NET ODBC
-
02-07-2019 - |
Вопрос
Я открываю соединение, подобное этому:
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
Если пул подключений включен, соединение физически не закрывается, а передается в пул и будет использоваться повторно.Если он отключен, он будет физически закрыт.
Есть ли какой-нибудь способ узнать программно если включено объединение в пул соединений или нет?а количество используемых и неиспользуемых подключений, открытых в данный момент в пуле?
Редактировать: Мне нужно получить эту информацию изнутри программы, я не могу пойти и проверить ее вручную на каждом отдельном компьютере, где будет развернута программа.
Решение
Похоже, вы можете просто прочитать этот раздел реестра:
[HKEYLOCALMACHINE]\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\ODBC\ODBCINST.INI\SQL Server\CPTimeout
(или какой-либо его вариант, в зависимости от вашей операционной системы и учетной записи пользователя).Если значение равно 0, то объединение в пул подключений отключено.Если это любое значение выше 0, оно включено.
Видишь:
http://msdn.microsoft.com/en-us/library/ms810829.aspx
Я не уверен насчет получения количества открытых подключений.Просто любопытно:зачем вам нужно знать этот номер?
Другие советы
MSDN как подробные рекомендации по этому вопросу
Настройка пула подключений от администратора источника данных
[отрывок]
В качестве альтернативы вы можете запустить ODBC Администратор источника данных в командной строке Выполнить .На панели задач, нажмите кнопку Пуск, нажмите кнопку Выполнить, а затем введите Odbcad32.
Вкладка для управления подключением объединение в пул находится в диалоговом окне Администратора источника данных ODBC в версии ODBC 3.5 и более поздних версиях.Настройка пула подключений из реестра
Для версий, предшествующих версии 3.5 основных компонентов ODBC, вам необходимо изменить реестр напрямую, чтобы управлять объединением соединений значением CPTimeout.
Объединение в пул всегда обрабатывается программным обеспечением сервера данных.Весь смысл в том, что в .NET вам не нужно беспокоиться об этом (например, вот почему вы всегда должны использовать SqlConnection при работе с SQL Server - отчасти это связано с тем, что оно позволяет использовать пул соединений).
Обновить
В Vista просто введите "ODBC" в меню "Пуск", и программа найдет нужное вам приложение.
Обновление После Уточнения из OP
С точки зрения определения того, включен ли пул подключений на каждом компьютере, рассмотрим Руководящие принципы MSDN Я бы сказал, что вам было бы лучше всего, если бы вы проверили значения реестра (см. эта статья для получения указаний на доступ к реестру).
Хотя, если бы клиентские машины не были действительно дерьмовыми, я бы, возможно, даже не стал утруждать себя..AFAIK включен по умолчанию, и открытие подключений на клиентском компьютере (по моему опыту) никогда не было большой проблемой.Это действительно становится важным только тогда, когда Лоты открываются.
Чтобы определить количество открытых подключений к каждой базе данных, попробуйте этот sql - я получил его из документа в Интернете
select db_name(dbid) , count(*) 'connections count'
from master..sysprocesses
where spid > 50 and spid @@spid
group by db_name(dbid)
order by count(*) desc
Пазухи <=50 используются sqlserver.Таким образом, приведенный выше sql сообщит вам о соединении, используемом вашими программами.