Partager via


Types de transactions

Microsoft SQL Server Compact prend en charge deux types de transactions : celles explicites et celles de validation automatique.

Transactions explicites

Une transaction explicite est une transaction dans laquelle vous définissez de manière explicite le début et la fin de la transaction. À cette fin, vous pouvez utiliser des instructions SQL ou des fonctions API de base de données.

Instructions SQL

Visual Studio permet d'utiliser les instructions SQL suivantes pour définir des transactions explicites :

  • BEGIN TRANSACTION

    Marque le point de départ d'une transaction explicite pour une connexion.

  • COMMIT TRANSACTION

    Termine une transaction correctement si aucune erreur n'est rencontrée. Toutes les données modifiées par la transaction deviennent partie intégrante de la base de données. Les ressources détenues par la transaction sont libérées.

  • ROLLBACK TRANSACTION

    Efface une transaction dans laquelle aucune erreur n'est rencontrée. L'état antérieur de toutes les données modifiées par la transaction est restauré. Les ressources détenues par la transaction sont libérées.

ADO.NET et OLE DB

Vous pouvez également utiliser des transactions explicites dans ADO.NET et OLE DB.

Dans ADO.NET, utilisez la méthode BeginTransaction sur un objet SqlCeConnection pour démarrer une transaction explicite. Pour terminer la transaction, appelez les méthodes Commit ou Rollback de l'objet SqlCeTransaction.

Dans OLE DB, appelez la méthode ITransactionLocal::StartTransaction pour démarrer une transaction. Appelez la méthode ITransaction::Commit ou ITransaction::Abort, avec le paramètre fRetaining défini sur FALSE pour terminer la transaction sans en démarrer automatiquement une autre. Notez que vous pouvez créer plusieurs transactions sur une seule connexion ADO.NET et les affecter à des commandes séparées.

Important

Lorsque vous validez des transactions à l'aide de l'API ADO.NET, tous les lecteurs de données et jeux de résultats ouverts dans la transaction en question doivent être fermés.

Transactions de validation automatique

Le mode de validation automatique est le mode de gestion par défaut des transactions de SQL Server Compact. À la fin de chaque instruction SQL, celle-ci est validée ou annulée. Une connexion SQL Server Compact travaille en mode de validation automatique lorsque ce mode par défaut n'a pas été remplacé par des transactions explicites. Le mode de validation automatique est également le mode par défaut pour ADO.NET et OLE DB.

Une connexion SQL Server Compact travaille en mode de validation automatique jusqu'à ce qu'une instruction BEGIN TRANSACTION démarre une transaction explicite. Lors de la validation ou de l'annulation de la transaction explicite, SQL Server Compact repasse en mode de validation automatique.

Erreurs de compilation et d'exécution

Contrairement à SQL Server, SQL Server Compact ne traite pas les instructions par lots. SQL Server Compact traite les instructions une par une et exécute chaque instruction individuellement. Si une instruction particulière renvoie une erreur, cela n'affecte en rien les autres instructions incluses dans le lot. Par exemple, si vous utilisez Visual Studio pour exécuter l'ensemble de requêtes ci-dessous dans SQL Server Compact, les deux premières requêtes sont exécutées correctement mais la troisième échoue en raison d'une erreur de syntaxe.

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

Notes

Si ces requêtes étaient envoyées à SQL Server dans un lot, toutes échoueraient, car elles seraient analysées ensemble. L'erreur de syntaxe empêche SQL Server d'élaborer un plan d'exécution pour le lot.

Les transactions de niveau supérieur dans lesquelles une opération se déroule ne restaurent pas et n'annulent pas la transaction.

Voir aussi

Concepts

Transactions (SQL Server Compact)

Contrôle des transactions

Autres ressources

Transactions et connectivité