Síntomas
Suponga que ha especificado el intervalo de vaciado en el número máximo de segundos de la cadena de conexión antes de que las transacciones confirmadas se vacíen en el disco en Microsoft SQL Server Compact 4,0. En esta situación, las transacciones confirmadas pueden tardar mucho más tiempo que el intervalo de vaciado que se va a vaciar en el disco o incluso no se pueden vaciar en el disco. Además, la pérdida de datos se produce si hay una finalización anormal del programa.
Resolución
El hotfix que resuelve este problema se incluye en un paquete de actualización de revisiones a petición para SQL Server Compact 4,0 Service Pack 1. Para obtener más información sobre cómo obtener este paquete de actualización de la revisión para SQL Server Compact 4,0, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2960153 Paquete de actualización de revisiones a petición para SQL Server Compact 4,0 Service Pack 1
Solución alternativa
Para evitar este problema, use CommitMode. inmediato para vaciar los cambios inmediatamente en lugar de confiar en el intervalo de vaciado. En el siguiente código de ejemplo se muestra esta técnica: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)
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".