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".