Domanda

Sto lavorando al progetto di qualcun altro che fa un uso intenso di TableAdapters. Il sito funziona ma aggiunge regolarmente una voce nel registro eventi:

  

" ExecuteReader richiede un open e   connessione disponibile. La connessione è   lo stato corrente si sta connettendo. & Quot;

Il sito non genera un'eccezione, tuttavia, a meno che non vi sia un traffico elevato (oltre 5 richieste al secondo), l'eccezione è la stessa, indicando questa riga di codice:

this.Adapter.Fill(dataTable);
  

Traccia stack: at   System.Data.SqlClient.SqlConnection.GetOpenConnection (String   metodo) a   System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute (String   metodo, comando SqlCommand)

Come posso interrompere questo errore? Grazie.

Si è scoperto che stavo ottenendo solo metà dell'immagine, l'errore, quando avrebbe generato un errore è:

  

" Esiste già un DataReader aperto   associato a questo comando quale   deve essere chiuso per primo. "

È stato utile?

Soluzione

Direi che probabilmente stai usando la stessa connessione per più scopi e uno di loro si sta chiudendo con un altro thread.

Consiglio di aggiungere qualche traccia per capire cosa sta succedendo. È difficile eseguire il debug di questo tipo di errori, quelli che si ottengono solo durante la produzione :(

Altri suggerimenti

Se sembra che tu abbia superato il numero consentito di connessioni aperte al tuo database. Questo può essere impostato nella stringa di connessione fornendo valori per i valori Dimensione min pool e Dimensione pool max. Penso che i valori predefiniti siano 0 per Dimensione min pool e 100 per Dimensione max pool, ma non ne sono sicuro.

Prova a cambiarli e vedi se aiuta.

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