Sto scrivendo un'applicazione in C# che accede a un database di SQL Server 2005. L'applicazione è abbastanza intensiva per il database e, anche se provo a ottimizzare tutti gli accessi, impostare gli indici appropriati e così via, mi aspetto che prima o poi si verificheranno deadlock. So perché avvengono i deadlock del database, ma dubito che riuscirò a rilasciare il software senza che si verifichino deadlock in un dato momento. L'applicazione utilizza Entity Framework per l'accesso al database.Modelli per la gestione di un deadlock SQL in C#?
Esistono buoni schemi per la gestione di SQLExceptions (deadlocked) nel codice del client C#, ad esempio per rieseguire il batch di istruzioni dopo x millisecondi?
Per chiarire; Non sto cercando un metodo su come evitare deadlock in primo luogo (livelli di isolamento, indici, ordine delle istruzioni, ecc.), Ma piuttosto come gestirli quando si verificano effettivamente.
Puoi dirmi come hai eseguito l'effettivo riesecuzione della transazione? Hai inserito un semplice ciclo a giro attorno al codice in ogni posto in cui hai avuto una transazione o hai trovato una soluzione più generica? – martin
Abbiamo implementato un ciclo. Se la transazione non è riuscita, a causa di una situazione di deadlock, abbiamo ripristinato l'intera transazione e riprovato fino a 5 volte. –