Comment définir le niveau d'isolation sur SqlCommand / SqlConnection initialisé sans transaction
La méthode suivante est censé peroform un sale lire sur une connexion ouverte. Il n'y a pas de transactions. Où puis-je configurer IsolationLevel?
public string DoDirtyRead(string storedProcName, SqlConnection connection)
{
using (SqlCommand command = new SqlCommand(storedProcName, connection))
{
command.CommandType = CommandType.StoredProcedure;
// HOW TO SET IsolationLevel to READ_UNCOMMITTED here?
command.ExecuteNonQuery();
}
}
source d'informationauteur kateroh
Vous devez vous connecter pour publier un commentaire.
Sur le BeginTransaction méthode: (MSDN lien)
Et si vous voulez juste utiliser les indicateurs dans votre SP au niveau de la table, utilisez AVEC(NOLOCK) - mais à utiliser à vos propres risques.
Si vous ne voulez pas de faire des transactions, vous pouvez les régler en une fois lorsque vous ouvrez la connexion et il le restera jusqu'à ce que vous le modifiez. Il suffit donc de ne:
Probablement pas le meilleur pour votre cas, puisque vous êtes l'ouverture de la connexion, de son utilisation et de le jeter, mais je voulais mettre la réponse à cette question pour les personnes ayant une plus longue durée de connexion.
Donné que vous avez déjà une connexion existante (et, éventuellement, d'une transaction existante), j'aimerais utiliser un TransactionScope pour contrôler le niveau d'isolement de l'enfant. Ce qui fait un sale lire rowcount (je crois):
Dans votre Procédure Stockéepour transact-sql utilisation:
Ajouter un autre paramètre à votre procédure stockée pour indiquer le niveau d'isolation que vous souhaitez la procédure stockée à exécuter.
SI @isolevel = 0
SET TRANSACTION ISOLATION LEVEL read uncommitted;
D'AUTRE
Aussi je crois non validées besoin de deux "t".