SQL Server Compact抛出System.AccessViolationException

时间:2015-11-11 22:48:13

标签: c# .net sql-server-ce

我有一个C#应用程序写入加密的SQL Server Compact数据库。这是代码:

conn = new SqlCeConnection(connectionString);
ConnectionOpen();

SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO TableName ([Date],[ParentURL],[ChildURL],[DateLongFormat]) VALUES (@EntryDate ,@parentUrl,@childUrl,@EntryDateLong)";

cmd.Parameters.AddWithValue("@EntryDate", EntryDate);
cmd.Parameters.AddWithValue("@parentUrl", parentUrl);
cmd.Parameters.AddWithValue("@childUrl", childUrl);
cmd.Parameters.AddWithValue("@EntryDateLong", EntryDate.ToString("yyyy/MM/dd hh:mm:ss.fff"));

int count = cmd.ExecuteNonQuery();

cmd.Dispose();
ConnectionClose();

非常偶尔(大约1/500次)EXE将崩溃抛出以下两个错误(通过事件查看器应用程序日志检索):

[Source = .NET Runtime]
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
Stack:
   at System.Data.SqlServerCe.SqlCeCommand.ReleaseNativeInterfaces()
   at System.Data.SqlServerCe.SqlCeCommand.Dispose(Boolean)
   at System.Data.SqlServerCe.SqlCeCommand.Finalize()

[Source = Application Error]
Exception code: 0xc0000005
Fault offset: 0x000000000005030e
Faulting module path: C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\sqlcese40.dll

最初我认为错误是由两个线程试图同时写入数据库引起的,但SQL Server Compact支持多线程。我还更改了SQL Server Compact数据库模式以支持具有巨大字符限制的字符串值,因此它不是因为它试图写入比单元格值更长的字符串。

我的所有C#代码都在try / catch中执行,任何人都知道应用程序崩溃的原因,或者这些堆栈跟踪的含义是什么?

0 个答案:

没有答案