Príznaky
Predpokladajme, že ste zadali interval flush v maximálnom počte sekúnd v reťazci pripojenia pred vyplnením transakcií na disk v Microsoft SQL Server Compact 4,0. V tejto situácii môžu spáchané transakcie trvať oveľa dlhšie ako interval flush , ktorý sa má zaprázdniť na disk, alebo sa dokonca nemusí zaprázdniť na disk. Okrem toho dochádza k strate údajov v prípade abnormálneho ukončenia programu.
Riešenie
Rýchla oprava, ktorá rieši tento problém, je zahrnutá v balíku rýchlej opravy na požiadanie pre SQL Server Compact 4,0 Service Pack 1. Ďalšie informácie o tom, ako získať tento balík s aktualizáciou hotfix pre SQL Server Compact 4,0, nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2960153 Balík s aktualizáciou hotfix na požiadanie pre SQL Server Compact 4,0 Service Pack 1
Alternatívne riešenie
Ak chcete tento problém obísť, použite CommitMode. okamžité vyprázdnenie zmien okamžite namiesto toho, aby sa spoliehal na interval flush. Nasledujúci vzorový kód demonštruje túto techniku: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)
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.