Triệu chứng
Giả định rằng bạn đã xác định khoảng Flush trong số giây tối đa trong chuỗi kết nối trước khi giao dịch cam kết bị xóa vào ổ đĩa trong Microsoft SQL Server Compact 4,0. Trong trường hợp này, các giao dịch cam kết có thể mất nhiều thời gian hơn khoảng tuôn ra để bị xóa vào đĩa hoặc thậm chí có thể không bị đỏ bừng vào ổ đĩa. Ngoài ra, mất dữ liệu xảy ra nếu có một chương trình chấm dứt bất thường.
Giải pháp
Các hotfix giải quyết sự cố này được bao gồm trong gói bản Cập Nhật theo yêu cầu hotfix cho gói dịch vụ SQL Server Compact 4,0 1. Để biết thêm thông tin về cách tải gói bản Cập Nhật hotfix này theo yêu cầu cho SQL Server Compact 4,0, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2960153 Gói Cập Nhật hotfix theo yêu cầu cho SQL Server Compact 4,0 Service Pack 1
Cách giải quyết
Để giải quyết vấn đề này, hãy sử dụng chế độ commit. ngay lập tức để xóa các thay đổi ngay lập tức thay vì dựa vào khoảng thời gianchuyển phát. Mã mẫu sau đây thể hiện kỹ thuật này: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)
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".