Imposta livello di isolamento predefinito per Microsoft.Practices.EnterpriseLibrary
-
19-09-2019 - |
Domanda
Ho un sito web NET 3.5 che chiama diverse migliaia di stored procedure utilizzando Microsoft.Practices.EnterpriseLibrary.
Stiamo ottenendo un sacco di timeout e dopo un po 'di gioco e testare l'utilizzo di (NOLOCK) sulla fine della tabella si uniscono in stored procedure funziona davvero bene e riduce i timeout.
Voglio ora fare questo per tutti gli SP. Potrei aggiungere (nolock) per i nomi delle tabelle, ma una migliore idea è quella di impostare il livello di isolamento utilizzando in SQL "isolamento SET TRANSACTION LEVEL READ UNCOMMITTED"
Non desidero aggiungere questo al punto di partenza di tutte le sp di (come ce ne sono tanti) quindi cercavo un modo per aggiungerlo alla connessione.
Un esempio del codice per chiamare un sp è la seguente
public static int ExecuteNonQuery(string sStoredProcedureName, params object[] parameterValues)
{
Data.Database db = Data.DatabaseFactory.CreateDatabase();
using (DbCommand command = db.GetStoredProcCommand(sStoredProcedureName, parameterValues))
{
return db.ExecuteNonQuery(command);
}
}
sto pensando questa impostazione è un'impostazione di configurazione nel web.config, ma riesco a capire quello che è, o se sono sulla strada giusta.
Ogni aiuto è molto apprezzato.
Saluti Amjid
Soluzione
Presumo stai usando SQL Server?
Prova a impostare READ COMMITTED SNAPSHOT sul database.
Vedi qui per maggiori informazioni: