Question

Nous avons des listes de données extraites dans notre application via une commande SqlCommand qui effectue une requête SELECT sur une base de données SQL Server. Nous ne configurons pas explicitement une transaction sur le SqlCommand, nous lui passons simplement un SqlConnection et l’exécutons. Est-il vrai que lorsqu'aucune transaction n'est spécifiée, SQL Server initiera et utilisera une transaction par défaut avec le paramètre IsolationLevel par défaut de ReadCommitted ?

Était-ce utile?

La solution

SQL Server peut fonctionner sans aucune transaction explicite. Mais oui, je pense qu’il s’agit essentiellement de lecture (sauf si, bien sûr, vous ajoutez des astuces supplémentaires à vos objets de requête, telles que UPDLOCK / NOLOCK ). Vous pouvez étudier ceci avec:

DBCC USEROPTIONS

qui montre (entre autres):

isolation level read committed

Autres conseils

SQL crée implicitement une transaction pour vos instructions. Cette transaction est validée à la fin de l'instruction. Le niveau d'isolation de cette transaction sera le niveau d'isolation actuel, qui passera par défaut à READ COMMITTED. Certaines instructions écrasent le niveau d’isolation actuel et appliquent READ COMMITTED (par exemple, RECEIVE).

Si votre SqlCommand exécute un lot (plusieurs instructions), chaque instruction utilisant des tables d'accès créera sa propre transaction.

La autocommit de transactions par défaut est contrôlée en modifiant le paramètre SET IMPLICIT_TRANSACTION. ON.

Voir Contrôle des transactions pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top