Problembeschreibung
Es wird davon ausgegangen, dass Sie das leer Intervall in der Verbindungszeichenfolge in der maximalen Anzahl von Sekunden angegeben haben, bevor zugesicherte Transaktionen in Microsoft SQL Server Compact 4,0 auf den Datenträger geleert werden. In diesem Fall kann es sein, dass die zugesicherten Transaktionen viel Zeit in Anspruch nehmen, als das Flush-Intervall auf die Festplatte geleert wird oder nicht sogar auf die Festplatte geleert wird. Darüber hinaus tritt ein Datenverlust auf, wenn eine anormale Programmbeendigung vorliegt.
Fehlerbehebung
Der Hotfix zur Behebung dieses Problems ist in einem on-Demand-Hotfix-Updatepaket für SQL Server Compact 4,0 Service Pack 1 enthalten. Weitere Informationen dazu, wie Sie dieses on-Demand-Hotfix-Updatepaket für SQL Server Compact 4,0 erhalten, finden Sie in folgendem Artikel der Microsoft Knowledge Base:
2960153 On-Demand-Hotfix-Updatepaket für SQL Server Compact 4,0 Service Pack 1
Problemumgehung
Um dieses Problem zu umgehen, verwenden Sie CommitMode. immediate , um die Änderungen sofort zu leeren, anstatt sich auf das Flush-Intervallzu verlassen. Der folgende Beispielcode veranschaulicht dieses Verfahren: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 hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.