Exécuter une command SQLC sans spécifier de transaction

Nous avons certaines lists de données récupérées dans notre application via un SqlCommand effectuant une requête SELECT sur une database SQL Server. Nous ne configurons pas explicitement une transaction sur SqlCommand, mais lui transmettons simplement une SqlConnection et l'exécutons. Est-il le cas que, lorsqu'aucune transaction n'est spécifiée, SQL Server lancera et utilisera une transaction par défaut avec le ReadCommitted IsolationLevel par défaut de ReadCommitted ?

SQL Server peut fonctionner sans transaction explicite. Mais oui, je crois que c'est essentiellement lu-commit (à less, bien sûr, que vous ajoutiez des indications supplémentaires à vos objects de requête, tels que UPDLOCK / NOLOCK ). Vous pouvez étudier ceci avec:

 DBCC USEROPTIONS 

qui montre (entre autres):

 isolation level read committed 

SQL crée implicitement une transaction pour vos instructions et cette transaction est validée lorsque l'instruction est terminée. Le niveau d'isolation de cette transaction correspond au niveau d'isolation actuel, qui est défini par défaut sur READ COMMITTED. Certaines instructions écrasent le niveau d'isolation actuel et appliquent READ COMMITTED (par exemple, RECEIVE).

Si votre SqlCommand exécute un batch (plus d'instructions) alors chaque instruction accédant aux tables créera sa propre transaction.

La validation automatique par défaut des transactions est contrôlée en modifiant le paramètre IMPLICIT_TRANSACTION sur ON.

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