Sintomas
Suponha que especificou o intervalo de descarga no número máximo de segundos da cadeia de ligação antes de as transações comprometidas serem descarregadas para o disco no Microsoft SQL Server Compact 4.0. Nesta situação, as transações comprometidas podem demorar muito mais tempo do que o intervalo de descarga para ser lavado no disco ou pode nem sequer ser lavado para o disco. Adicionalmente, a perda de dados ocorre se houver uma interrupção anormal do programa.
Resolução
O hotfix que resolve este problema está incluído num pacote de atualização de hotfix on-demand para SQL Server Compact 4.0 Service Pack 1. Para obter mais informações sobre como obter este pacote de atualização de hotfix on-demand para SQL Server Compact 4.0, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:
2960153 Pacote de atualização de hotfix a pedido para SQL Server Compact 4.0 Service Pack 1
Solução
Para contornar este problema, utilize o CommitMode.Imediatamente para lavar as alterações imediatamente em vez de depender do intervalo de descarga. O seguinte código de amostra demonstra 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
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".