2017-09-12 10 views
0

Mon application appelle plusieurs SP, il semble que, entre ces appels, le niveau d'isolement soit modifié en Serializable. J'ai parcouru le code et nous ne définissons pas le niveau d'isolation n'importe où. Est-il possible de savoir si le pool de connexion SQL définit ce niveau? J'utilise MS SQL 2008 R2. Lorsque j'exécute le profileur SQL, je vois que l'isolation a changé. Le SP appelé ne le change pas. Est-ce parce que le niveau d'isolation n'est pas spécifié, le pool de connexion SQL décide du niveau à utiliser et ne le rétablit pas?Trouver quelle transaction est en train de changer IsolationLevel

Audit Login -- network protocol: LPC 
set quoted_identifier on 
set arithabort on 
set numeric_roundabort off 
set ansi_warnings on 
set ansi_padding on 
set ansi_nulls on 
set concat_null_yields_null on 
set cursor_close_on_commit off 
set implicit_transactions off 
set language us_english 
set dateformat mdy 
set datefirst 7 
set transaction isolation level serializable 
+0

Utilisez-vous Entity Framework dans votre application? J'ai rencontré des problèmes où Serializable était utilisé par défaut et c'était surprenant (pour moi au moins). –

+0

Nous utilisons SqlCommand, Ben. – SoothingMusic

Répondre

2

Les connexions regroupées réutilisées ne modifient pas le niveau d'isolation des transactions. Vous pouvez utiliser TransactionScope. The default isolation level with TransactionScope is serializable sauf indication contraire.

+0

Merci Dan. Dans notre code, nous utilisons using (var trans = new TransactionScope (TransactionScopeOption.RequiresNew)). On dirait que cela pourrait être le coupable – SoothingMusic