Ich verwende Sql Server Compact Edition 3.5.1.0 SP1 in einer Multithread-Anwendung. Die Anwendung führt in zufälliger Reihenfolge Insert-Abfragen in Transaktionen aus. Bei kurzen Transaktionen funktioniert es gut. Aber wenn die Transaktionen länger werden und die Verzögerung zwischen Ausführungen kürzer werden oder wenn ich die Anwendung im Debug-Modus ausgeführt wird, beginnt SQLCE die folgende Ausnahme zufällig zu werfen:Sql Compact erzeugt zufällig AccessViolationException
Access Versuchte zu lesen oder im geschützten Speicher schreiben. Diese ist oft ein Hinweis darauf, dass andere Speicher beschädigt ist.
bei System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() bei System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand (CommandBehavior Verhalten, String-Methode, ResultSetOptions Optionen) bei System.Data.SqlServerCe.SqlCeCommand .ExecuteNonQuery() bei SqlCompactTest.TransactedCommandGroupExecutionTest.Test() in D: \ Projects \ Spielplatz \ SqlCompactTest \ SqlCompactTest \ TransactedCommandGroupExecutionTest.cs: Linie 53 bei SqlCompactTest.ExecutionTest.RunTest() in D: \ Projects \ Spielplatz \ SqlCompactTest \ SqlCompactTest \ ExecutionTest.cs: Linie 60 bei SqlCompactTest.ExecutionTest.TimerElapsed (Object sender, ElapsedEventArgs e) in D: \ Projects \ Spielplatz \ SqlCompactTest \ SqlCompactTest \ ExecutionTest.cs : line 68 bei System.Timers.Timer.MyTimerCallback Der Code
( Zustand Object) bei mir läuft ist:
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();
Dieser Code gleichzeitig in tw läuft o Fäden. Verbindungszeichenfolge ist:
"Data Source=testDB.sdf;Encrypt Database=True;Password=test;File Mode=Read Write;Persist Security Info=False;Max Database Size=1024"
fand ich absurd Lösungen auf Internet wie zurück zum Rahmen Zurücksetzen 1.1, die Reihenfolge der Methodenargumente zu ändern, die Aktivierung/Deaktivierung Optimierungen etc., aber keiner von ihnen arbeitete für mich. Ich habe auch durch possible solutions on microsoft sites iteriert, aber ich konnte keine Lösung finden, die für mich funktioniert. Meine Datenbankdateiversion ist 3.5.0.0.
Wie kann ich das lösen?
Wurde der Fehler behoben? Ich muss jetzt die Antwort –