Sintomas
Suponha que você tenha especificado o intervalo de liberação no número máximo de segundos na cadeia de conexão antes que as transações confirmadas sejam liberadas para o disco no Microsoft SQL Server Compact 4,0. Nessa situação, as transações confirmadas podem levar muito mais tempo do que o intervalo de liberação para ser liberado para disco ou podem não ser liberados para o disco. Além disso, a perda de dados ocorre se houver uma terminação anormal do programa.
Resolução
O hotfix que resolve esse problema está incluído em um pacote de atualização de hotfix sob demanda para SQL Server Compact 4,0 Service Pack 1. Para obter mais informações sobre como obter esse pacote de atualização de hotfix sob demanda para SQL Server Compact 4,0, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:
2960153 Pacote de atualização de hotfix sob demanda para SQL Server Compact 4,0 Service Pack 1
Solução alternativa
Para solucionar esse problema, use CommitMode. Immediate para liberar as alterações imediatamente em vez de confiar no intervalo de liberação. O código de exemplo a seguir demonstra essa 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)
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".