Вопрос

Я открываю соединение, подобное этому:

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 сообщит вам о соединении, используемом вашими программами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top