Симптоми
Да предположим, че сте задали интервал за изчистване в максималния брой секунди в низа на връзката, преди да бъдат отхвърлени транзакциите в Microsoft SQL Server Compact 4,0. В този случай извършените транзакции може да изминат много по-дълго време, отколкото интервалът за изчистване да се промие на диск или дори да не се промие на диск. Освен това загуба на данни възниква, ако има необичайно прекратяване на програмата.
Решение
Актуалната корекция, която отстранява този проблем, е включена в пакета за актуализиране на спешна корекция при поискване за SQL Server Compact 4,0 Service Pack 1. За повече информация как да получите този пакет за актуализиране на актуалната корекция при поискване за SQL Server Compact 4,0, щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:
2960153 Пакет за актуализиране на актуална корекция за SQL Server Compact 4,0 Service Pack 1
Заобиколно решение
За да заобиколите този проблем, използвайте CommitMode. незабавно , за да отхвърлите промените веднага, вместо да разчитате на интервала на Flush. Следващият примерен код демонстрира тази техника: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)
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".