Symptômes
Supposez que vous ayez spécifié l' intervalle de vidage dans le nombre maximal de secondes de la chaîne de connexion avant que les transactions validées soient vidées sur le disque dans Microsoft SQL Server Compact 4,0. Dans cette situation, il est possible que les transactions validées aient plus de temps que l' intervalle de vidage à vider sur le disque ou qu’elles ne soient pas vidées sur le disque. Par ailleurs, une perte de données se produit en cas de résiliation anormale du programme.
Résolution
Le correctif qui résout ce problème est inclus dans un package de mise à jour des correctifs à la demande pour SQL Server Compact 4,0 Service Pack 1. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour des correctifs à la demande pour SQL Server Compact 4,0, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2960153 Package de mise à jour des correctifs à la demande pour SQL Server Compact 4,0 Service Pack 1
Solution de contournement
Pour contourner ce problème, utilisez CommitMode. immediat pour vider immédiatement les modifications au lieu de dépendre de l' intervalle de vidage. L’exemple de code suivant illustre cette technique :conn.ConnectionString = "Data Source = c:\temp\SalesData.sdf; " conn.Open() Dim tx As SqlCeTransaction tx = conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted) com = conn.CreateCommand() com.Transaction = tx Dim a As Integer a = 101 While (a <= 1000) com.CommandText = "insert into Orders values (" + Convert.ToString(a) + ", 'best', 200)" com.ExecuteNonQuery() a = a + 1 End While tx.Commit(CommitMode.Immediate)
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.