2010-03-16 11 views
6

Come mantenere un SqlConnection (o l'utilizzo di un altro componente) aperto (connesso) sempre durante l'esecuzione della mia app .Net?Come mantenere un SqlConnection sempre aperto

ho bisogno di questo perché la mia applicazione ha bisogno di rilevare utilizzare questo commnad

exec sp_who2 

quante istanze di mia app sono collegati a MyDatabase, per limitare l'accesso (controllo licenza).

esempio

A) la mia applicazione eseguita da location1

  1. controllo il numero delle mie applicazioni collegate al server sql utilizzando exec sp_who2
  2. se il numero di mie applicazioni < MaxLicencesConnected quindi avvia la mia app e apri una sqlconnection

B) la mia app eseguito da location2

  1. controllo il numero delle mie applicazioni collegate al server sql utilizzando exec sp_who2
  2. se il numero di mie applicazioni> = MaxLicencesConnected quindi chiudere la mia domanda

scusa per il mio inglese.

grazie in anticipo.

risposta

3

Non sarebbe più semplice avere una tabella in cui si aggiunge un record all'avvio del programma e lo si rimuove quando il programma viene chiuso? Mantenere una connessione a SQL Server sempre aperto è piuttosto costoso.

Tecnicamente, qualcuno potrebbe venire a cancellare il record e avviare una nuova istanza, ma ovviamente se lo fanno la prima istanza smetterà di funzionare (assumendo che controlli la presenza del proprio record ogni ora e poi).

0

Myabe è possibile impostare un oggetto di connessione, aprirlo e archiviare in una variabile globale (statica). Credo che dovresti anche impostare il timeout della connessione, altrimenti verrà chiuso automaticamente se lasciato inattivo.

Franly, non penso che mantenere una connessione aperta sia una buona idea, dato che sono costosi.

1

Usa pool di connessioni. Set Dimensione max piscina e Dimensioni min piscina e Raggruppamento nella stringa di connessione.