Как сохранить SqlConnection открытым всегда - PullRequest
6 голосов
/ 16 марта 2010

Как сохранить SqlConnection (или использовать другой компонент) открытым (подключенным) всегда во время выполнения моего приложения .Net?

Мне это нужно, потому что моему приложению нужно обнаруживать, используя этот комнад

 exec sp_who2 

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

пример

A) мое приложение выполнено из location1

  1. проверьте количество моих приложений, подключенных к серверу sql, используя exec sp_who2
  2. если число моих приложений , тогда запустите мое приложение и откройте sqlconnection

B) мое приложение выполнено из location2

  1. проверьте количество моих приложений, подключенных к серверу sql, используя exec sp_who2
  2. если число моих приложений> = MaxLicencesConnected , тогда закройте мое приложение

извините за мой английский.

заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 16 марта 2010

Не проще ли иметь таблицу, в которую вы добавляете запись при запуске программы и удаляете ее при выходе из программы? Поддерживать постоянное подключение к SQL Server довольно дорого.

Технически, кто-то может прийти, удалить запись и запустить новый экземпляр, но, очевидно, если они это сделают, то первый экземпляр перестанет работать (если он время от времени проверяет наличие собственной записи) ).

2 голосов
/ 16 марта 2010

Пул соединений поддерживает соединение живым:

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

1 голос
/ 16 марта 2010

Использовать пул соединений . Установите Максимальный размер пула и Минимальный размер пула и Объединение в строке подключения.

0 голосов
/ 16 марта 2010

Myabe Вы можете установить объект подключения, открыть его и сохранить в глобальной (статической) переменной. Полагаю, вам также нужно будет установить тайм-аут соединения, иначе оно будет автоматически закрыто, если оно простаивает.

Честно говоря, я не думаю, что держать соединение открытым - хорошая идея, так как они дороги.

...