Simptomi
Pieņemiet, ka ir norādīts intervāla intervāls , kas maksimālais sekunžu skaits savienojuma virknē, pirms veiktās transakcijas ir sapludinātas ar disku programmā Microsoft SQL Server Compact 4,0. Šādā gadījumā apņemšanās darījumiem var būt nepieciešams ilgāks laiks nekā skalošanas intervāls , kas jāskalo uz diska vai pat nav jāskalo diskā. Turklāt datu zudums rodas, ja ir anormāla programmas izbeigšana.
Risinājums
Labojumfails, kas novērš šo problēmu, ir iekļauts labojumfailu atjauninājumu pakotnē SQL Server Compact 4,0 1. servisa pakotnei. Lai iegūtu papildinformāciju par to, kā iegūt šo pieprasījumu labojumfailu atjaunināšanas pakotni SQL Server Compact 4,0, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
2960153 Pēc pieprasījuma labojumfaila atjaunināšanas pakotne SQL Server Compact 4,0 1. servisa pakotnei
Risinājums
Lai novērstu šo problēmu, izmantojiet CommitMode. Immediate , lai nekavējoties sapludinātu izmaiņas, nevis paļaujoties uz flush intervālu. Tālāk redzamajā piemērā tiek parādīts šāds paņēmiens: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)
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".