2009-09-30 4 views
3

J'ai un site Web .NET 3.5 qui appelle des milliers de processus stockés différents en utilisant Microsoft.Practices.EnterpriseLibrary.Définir le niveau d'isolation par défaut pour Microsoft.Practices.EnterpriseLibrary

Nous avons eu beaucoup de timeouts et après avoir joué et testé l'utilisation de (nolock) à la fin de la table, rejoindre procs stocké fonctionne très bien et réduit les délais.

Je veux maintenant faire cela à tous les sps. Je pourrais ajouter (nolock) à tous les noms de tables, cependant une meilleure idée est de définir le niveau d'isolation en utilisant SQL "SET TRANSACTION ISOLATION NIVEAU LECTURE NON COMMANDÉE"

Je ne veux pas ajouter cela au début de tous les sp (comme il y en a tellement) donc cherchait un moyen de l'ajouter à la connexion.

Un exemple de code pour appeler sp est la suivante

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); 
    } 
} 

Je pense ce paramètre est un paramètre de configuration dans le web.config, mais ne peux pas savoir ce qu'il est, ou si je m sur la bonne voie.

Toute aide est vraiment appréciée.

Salutations Amjid

+0

tout échantillon code complet avec une solution ?? – Kiquenet

Répondre

1

Je suppose que vous utilisez SQL Server?

Essayez de définir LIRE L'INSTANTANÉ COMMITTED sur la base de données.

Voir ici pour plus d'informations:

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

+0

Désolé pour la réponse tardive. Cela a fonctionné parfaitement. Il fonctionne à travers le tableau et il n'y a aucun besoin de n'importe quel changement de code du tout, excepté enlever le (noLock) que j'ai déjà mis acclame –

+0

hmmmm oui ... oui oui bien sûr, en effet – Scozzard

Questions connexes