Symptomy
Załóżmy, że określono Interwał opróżniania w maksymalnej liczbie sekund w ciągu połączenia, zanim transakcje zatwierdzone zostaną opróżnione na dysk w programie Microsoft SQL Server Compact 4,0. W takiej sytuacji zatwierdzone transakcje mogą trwać znacznie dłużej niż Interwał opróżniania , który ma zostać opróżniony na dysk, lub nawet może nie zostać opróżniony na dysk. Ponadto utrata danych następuje w przypadku nieprawidłowego zakończenia programu.
Rozwiązanie
Poprawka rozwiązująca ten problem jest uwzględniona w pakiecie aktualizacji poprawek na żądanie dla programu SQL Server Compact 4,0 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat uzyskiwania tego pakietu aktualizacji poprawek na żądanie dla programu SQL Server Compact 4,0, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2960153 Pakiet aktualizacji poprawek na żądanie dla programu SQL Server Compact 4,0 z dodatkiem Service Pack 1
Obejście
W celu obejścia tego problemu Użyj polecenia CommitMode. natychmiastowe , aby natychmiast ponownie opróżnić zmiany, zamiast korzystać z interwału opróżniania. Poniższy przykładowy kod ilustruje tę technikę: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)
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".