Sintomi
Si supponga di aver specificato l' intervallo di svuotamento nel numero massimo di secondi nella stringa di connessione prima che le transazioni commesse vengano svuotate su disco in Microsoft SQL Server Compact 4,0. In questo caso, le transazioni impegnate potrebbero richiedere molto più tempo rispetto all' intervallo di svuotamento da svuotare su disco o potrebbero anche non essere scaricate sul disco. Inoltre, la perdita dei dati si verifica se è presente una terminazione anormale del programma.
Risoluzione
L'hotfix che risolve questo problema è incluso in un pacchetto di aggiornamento hotfix su richiesta per SQL Server Compact 4,0 Service Pack 1. Per altre informazioni su come ottenere questo pacchetto di aggiornamento hotfix su richiesta per SQL Server Compact 4,0, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2960153 Pacchetto di aggiornamento hotfix su richiesta per SQL Server Compact 4,0 Service Pack 1
Soluzione alternativa
Per risolvere il problema, usare CommitMode. immediate per svuotare immediatamente le modifiche invece di fare affidamento sull' intervallo di svuotamento. Il codice di esempio seguente illustra questa tecnica: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)
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".