Domanda

Apro una connessione come questa:

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

Se il pool di connessioni è abilitato, la connessione non viene fisicamente chiusa ma rilasciata al pool e verrà riutilizzata. Se è disabilitato, verrà chiuso fisicamente.

Esiste un modo per conoscere a livello di programmazione se il pool di connessioni è abilitato o no? e il numero di connessioni utilizzate e non utilizzate attualmente aperte nel pool?

MODIFICA: Devo ottenere queste informazioni dall'interno del programma, non posso andare a controllarle manualmente su ogni singolo PC su cui verrà distribuito il programma.

È stato utile?

Soluzione

Sembra che tu possa leggere questa chiave di registro:

[HKEYLOCALMACHINE] \ SOFTWARE \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout

(o una sua variante, a seconda del sistema operativo e dell'account utente). Se il valore è 0, il pool di connessioni è disabilitato. Se ha un valore superiore a 0, è abilitato.

See:

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

Non sono sicuro di ottenere il numero di connessioni aperte. Solo curioso: perché devi conoscere il numero?

Altri suggerimenti

MSDN come linee guida approfondite su questo

  

Configurazione del pool di connessioni da   l'amministratore dell'origine dati

     

[snip]

     

In alternativa, puoi avviare ODBC   Amministratore dell'origine dati in esecuzione   richiesta. Sulla barra delle applicazioni, fai clic su Start,   fai clic su Esegui, quindi digita Odbcad32.

     

La scheda per la gestione della connessione   il pooling si trova nei dati ODBC   Finestra di dialogo Amministratore sorgente in   versione ODBC 3.5 e successive.   Configurazione del pool di connessioni da   il registro

     

Per versioni precedenti alla versione 3.5 di   i componenti principali ODBC, è necessario   modificare il registro direttamente in   controllare il pool di connessioni   Valore CPTimeout.

Il pooling è sempre gestito dal software del server di dati. Il punto è che in .NET non dovresti preoccuparti (ad esempio, questo è il motivo per cui dovresti sempre usare SqlConnection quando lavori con SQL Server - parte di ciò è che abilita il pool di connessioni).

Aggiornamento

Su Vista, basta digitare " ODBC " nel menu Start e troverà l'app che fa per te.

Aggiornamento dopo chiarimento dall'OP

In termini di determinazione se il pool di connessioni è abilitato su ogni macchina, guardando Linee guida MSDN Direi che sarebbe meglio se controlli i valori del registro (Vedi questo articolo per indicazioni sull'accesso al registro).

Tuttavia, TBH, a meno che le macchine client non siano davvero pessime, probabilmente non mi preoccuperei nemmeno. AFAIK è abilitato per impostazione predefinita e l'apertura delle connessioni su una macchina client (nella mia esperienza) non è mai stata un grosso problema. Diventa davvero un grosso problema quando si aprono lotti .

Per determinare il numero di connessioni aperte su ciascun db, prova questo sql - l'ho preso da un documento su Internet

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 sono usati da sqlserver. Quindi il sql sopra ti direbbe la connessione utilizzata dai tuoi programmi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top