Пул соединений .NET ODBC - PullRequest
       14

Пул соединений .NET ODBC

3 голосов
/ 24 сентября 2008

Я открываю соединение вот так:

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

Если пул соединений включен, соединение физически не закрывается, а передается в пул и будет использоваться повторно. Если он отключен, он будет физически закрыт.

Есть ли способ узнать программно , включен ли пул соединений или нет? а количество используемых и неиспользуемых соединений, открытых в данный момент в пуле?

РЕДАКТИРОВАТЬ: Мне нужно получить эту информацию из программы, я не могу пойти и проверить ее вручную на каждом ПК, где будет развернута программа.

Ответы [ 3 ]

2 голосов
/ 24 сентября 2008

MSDN как подробные рекомендации по этому

Настройка пула соединений от Администратор источника данных

[надрез] * * +1010

Кроме того, вы можете запустить ODBC Администратор источника данных во время работы незамедлительный. На панели задач нажмите Пуск, нажмите кнопку Выполнить, а затем введите Odbcad32.

Вкладка для управления соединением пул находится в данных ODBC Диалоговое окно «Администратор исходного кода» в версия ODBC 3.5 и выше. Настройка пула соединений от Реестр

Для версий до версии 3.5 основные компоненты ODBC, вам нужно изменить реестр напрямую контролировать пул соединений Значение CPTimeout.

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

Обновление

В Vista просто введите «ODBC» в меню «Пуск», и он найдет приложение для вас.

Обновление после уточнения от OP

С точки зрения определения, включен ли пул соединений на каждом компьютере, ознакомьтесь с рекомендациями MSDN Я бы сказал, что вам лучше всего проверить параметры реестра (см. в этой статье для указателей на доступ к реестру).

TBH, хотя, если клиентские машины не являются действительно дрянными, я бы даже не стал беспокоиться. AFAIK это включено по умолчанию, и открытие соединений на клиентской машине (по моему опыту) никогда не было большой проблемой. Это действительно становится большим делом, когда открываются лотов .

1 голос
/ 24 сентября 2008

Похоже, вы можете просто прочитать этот раздел реестра:

[HKEYLOCALMACHINE] \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout

(или его вариант, в зависимости от вашей ОС и учетной записи пользователя). Если значение равно 0, то пул соединений отключен. Если значение выше 0, оно включено.

См:

http://msdn.microsoft.com/en-us/library/ms810829.aspx

Я не уверен насчет количества открытых соединений. Просто любопытно: зачем тебе знать номер?

0 голосов
/ 08 мая 2009

Чтобы определить количество открытых соединений на каждом БД, попробуйте этот 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

Spids <= 50 используются sqlserver. Таким образом, приведенный выше sql сообщит вам соединение, используемое вашими программами. </p>

...