Tôi đang chạy Sql Server Compact Edition 3.5.1.0 SP1 trong một ứng dụng đa luồng. Ứng dụng chạy ngẫu nhiên chèn các truy vấn trong các giao dịch. Với giao dịch ngắn, nó hoạt động tốt. Nhưng khi các giao dịch được lâu hơn và sự chậm trễ giữa hành được ngắn hơn hoặc khi tôi chạy ứng dụng ở chế độ debug, SqlCE bắt đầu ném ngoại lệ sau đây một cách ngẫu nhiên:Sql Compact ngẫu nhiên tạo AccessViolationException
AccessViolationException Toan đọc hay ghi bộ nhớ được bảo vệ. này thường là dấu hiệu cho thấy bộ nhớ khác bị hỏng.
tại System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() tại System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand ( hành vi CommandBehavior, String phương pháp, ResultSetOptions tùy chọn) tại System.Data.SqlServerCe.SqlCeCommand .ExecuteNonQuery() tại SqlCompactTest.TransactedCommandGroupExecutionTest.Test() trong D: \ Projects \ sân chơi \ SqlCompactTest \ SqlCompactTest \ TransactedCommandGroupExecutionTest.cs: dòng 53 tại SqlCompactTest.ExecutionTest.RunTest() trong D: \ Projects \ sân chơi \ SqlCompactTest \ SqlCompactTest \ ExecutionTest.cs: dòng 60 tại SqlCompactTest.ExecutionTest.TimerElapsed (Object gửi, ElapsedEventArgs e) trong D: \ Projects \ sân chơi \ SqlCompactTest \ SqlCompactTest \ ExecutionTest.cs : dòng 68 tại System.Timers.Timer.MyTimerCallback (Object nhà nước)
mã tôi đang chạy là:
IDbConnection connection = m_connectionProvider.GetConnection(); // Just returns new connection
connection.Open();
IDbTransaction transaction = connection.BeginTransaction();
foreach (IDbCommand command in m_commands)
{
command.Connection = connection;
command.ExecuteNonQuery(); // This line throws exception
Thread.Sleep((int)m_delayBetweenExecutions);
}
transaction.Commit();
connection.Close();
mã này được chạy đồng thời trong tw o chủ đề. chuỗi kết nối là:
"Data Source=testDB.sdf;Encrypt Database=True;Password=test;File Mode=Read Write;Persist Security Info=False;Max Database Size=1024"
tôi tìm thấy giải pháp ngớ ngẩn trên Internet như quay trở lại để Framework 1.1, thay đổi thứ tự của các đối số phương pháp, bật/tắt tối ưu hóa vv nhưng không ai trong số họ làm việc cho tôi. Tôi cũng đã lặp lại thông qua possible solutions on microsoft sites nhưng tôi không thể tìm thấy giải pháp phù hợp với mình. Phiên bản tệp cơ sở dữ liệu của tôi là 3.5.0.0.
Tôi làm cách nào để giải quyết vấn đề này?
Các lỗi HA đã được khắc phục? Bây giờ tôi cần câu trả lời –