Domanda

Ho problemi con Timeout, quando si esegue un comando tramite app, un'eccezione di timeout è gettato, ma quando l'eseguo direttamente in SQL non esiste alcuna eccezione timeout!

il mio SP vorranno circa 11 min quando ho eseguito direttamente. per risolvere questo problema, ho trovato sotto il codice qui, ma non funziona correttamente! Subito dopo BeginExecute, IAsyncResult.iscomplete diventare vero !!!!

dove è il problema?

IAsyncResult result = command.BeginExecuteNonQuery();

    int count = 0;
    while (!result.IsCompleted)
    {
        Console.WriteLine("Waiting ({0})", count++);
        System.Threading.Thread.Sleep(1000);
    }
    Console.WriteLine("Command complete. Affected {0} rows.",
    command.EndExecuteNonQuery(result));

Per quanto riguarda

È stato utile?

Soluzione

Aumentare il timeout di comando invece ( SqlCommand .CommandTimeout ) che di default è di 30 secondi.

Altri suggerimenti

Una stringa di connessione sarà di default ad un secondo timeout 15. Vedere su MSDN .

È possibile modificare il timeout sulla stringa di connessione a durare più a lungo (connection timeout=600, per un timeout di 10 minuti).

questo sito per di più su stringhe di connessione.

Detto questo, si dovrebbe guardare a ottimizzare il vostro database e / o stored procedure. 11 minuti per una stored procedure è molto molto lungo. Hai gli indici corretti sulle vostre tavole? È memorizzato procedura scritta nel modo più ottimale?

Aggiornamento:

Hai fatto in modo che si sta utilizzando il comando corretto e che i risultati sono corretti? IsComplete essendo vero quasi immediatamente suggerisce che il comando ha infatti terminato.

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