Symptomer
Anta at du har angitt flush-intervall i maksimalt antall sekunder i tilkoblingsstrengen før utførte transaksjoner tømmes til disken i Microsoft SQL Server Compact 4.0. I dette tilfellet utførte transaksjoner kan ta mye lengre tid enn du tømme intervallet til tømmes til disken, eller kanskje enda ikke tømmes til disken. I tillegg oppstår datatap hvis det er en unormal avslutning.
Oppløsning
Hurtigreparasjon som løser dette problemet er inkludert i en behovsbetinget oppdateringen Hurtigreparasjonspakke for SQL Server Compact 4.0 Service Pack 1.Hvis du vil ha mer informasjon om hvordan du får tak i denne oppdateringspakken behovsbetinget hurtigreparasjonen for SQL Server Compact 4.0, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
2960153 on demand oppdateringen Hurtigreparasjonspakke for SQL Server Compact 4.0 Service Pack 1
Løsningen
Hvis du vil omgå dette problemet, kan du bruke CommitMode.Immediate til å tømme endringene umiddelbart i stedet for å stole på flush intervall. Denne teknikken er demonstrert i følgende eksempelkode: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)
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".