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

È stato utile?

Soluzione

Presumo stai usando SQL Server?

Prova a impostare READ COMMITTED SNAPSHOT sul database.

Vedi qui per maggiori informazioni:

http://www.codinghorror.com/blog/archives/001166.html

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