Dois-je ajouter la lecture validée après SET TRANSACTION ISOLATION LEVEL SERIALIZABLE?

9

Dans une procédure stockée, j'ai les éléments suivants: (SQL Server 2008)

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
 BEGIN TRANSACTION getStuff
 BEGIN TRY 
    /*  some selects, updates, etc, etc. */
    ....
    COMMIT TRANSACTION getStuff
 END TRY
 BEGIN CATCH 
   ...
 END CATCH

Puisqu'il s'agit d'une transaction, je pensais que le reste des connexions à la base de données ne serait pas affecté par le SERIALIZABLE.

Dois-je implicitement définir le niveau d'isolement pour lire validé après ma validation? Cela affectera-t-il d'autres connexions entre mon serveur d'applications et le serveur de base de données?

CFNinja
la source

Réponses:

6

La commande ne l'est TRANSACTION ISOLATION LEVELpas SERVER ISOLATION LEVEL. Il modifie uniquement le niveau d'isolement pour la portée de la transaction.

Erik Darling
la source
5

Non, vous n'avez pas besoin de rétablir implicitement le niveau d'isolement pour lire validé.

Des livres en ligne .

Si vous émettez SET TRANSACTION ISOLATION LEVEL dans une procédure stockée ou un déclencheur, lorsque l'objet renvoie le contrôle, le niveau d'isolement est réinitialisé au niveau en vigueur lorsque l'objet a été appelé. Par exemple, si vous définissez REPEATABLE READ dans un lot et que le lot appelle ensuite une procédure stockée qui définit le niveau d'isolement sur SERIALIZABLE, le paramètre de niveau d'isolement redevient REPEATABLE READ lorsque la procédure stockée renvoie le contrôle au lot.

SqlWorldWide
la source
3

La commande que vous avez publiée vient d'exécuter la transaction dans le SP avec TRANSACTION ISOLATION LEVEL SERIALIZABLE. Les autres connexions seront par défaut au niveau d'isolement par défaut - lecture validée (sauf si spécifié un niveau d'isolement différent explicitement).

Il existe une excellente série de Paul White - SQL Server Isolation Levels: A Series qui vous aidera à comprendre en profondeur ce que les différents niveaux d'isolement signifient et font lorsqu'ils sont utilisés.

Kin Shah
la source
-3

Un algorithme assez nouveau qui évite la plupart des inconvénients des approches précédentes. Il utilise une approche optimiste, permettant aux transactions de se dérouler sans blocage. Lorsqu'une transaction veut être validée, elle est vérifiée et elle est abandonnée si l'exécution n'était pas sérialisable. Plus de détails sur toutes les approches sur: http://writeulearn.com/relational-database-transactions/

cccc
la source
Cela ne semble pas être une réponse à la question ....
RDFozz