【问题标题】:SQL Server CE error - only on compiled codeSQL Server CE 错误 - 仅在编译代码上
【发布时间】:2015-07-06 04:29:18
【问题描述】:

我有一个奇怪的错误导致我的应用程序崩溃。它仅在通过单击一次编译和安装时发生,而不是在 Visual Studio 中调试时发生。

查看事件日志给了我这个:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Windows Error Reporting" /> 
    <EventID Qualifiers="0">1001</EventID> 
    <Level>4</Level> 
    <Task>0</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2015-04-27T14:51:30.000000000Z" /> 
    <EventRecordID>6471</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>me.local</Computer> 
    <Security /> 
  </System>
- <EventData>
    <Data /> 
    <Data>0</Data> 
    <Data>CLR20r3</Data> 
    <Data>Not available</Data> 
    <Data>0</Data> 
    <Data>calibration certificate builder</Data> 
    <Data>1.0.0.0</Data> 
    <Data>553e4aaa</Data> 
    <Data>System.Data.SqlServerCe</Data> 
    <Data>3.5.8080.0</Data> 
    <Data>4b743b2d</Data> 
    <Data>e3</Data> 
    <Data>0</Data> 
    <Data>System.ArgumentNullException</Data> 
    <Data /> 
    <Data>C:\Users\me\AppData\Local\Temp\WER80E0.tmp.WERInternalMetadata.xml</Data> 
    <Data>C:\Users\me\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_pick_cert_e053eebdc3d787d726058a9b0d3405c6f279444_3b258dcb</Data> 
    <Data /> 
    <Data>0</Data> 
    <Data>e12fbed6-ecec-11e4-b276-24fd52358985</Data> 
    <Data>65</Data> 
  </EventData>
</Event>

我不确定如何处理。我查看了我的代码,那里似乎没有问题。它似乎确实在某处的 SQL Server CE 代码中,但我一直找不到它。

我还将event.ExceptionObject 字符串推送到一个文本文件并得到了这个:

System.ArgumentNullException:值不能为空。 在 System.Threading.Monitor.Enter(对象 obj) 在 System.Data.SqlServerCe.SqlCeCommand.Dispose(布尔处理) 在 System.Data.SqlServerCe.SqlCeCommand.Finalize()

谁能帮我解释一下?

我已从其他线程中删除了对 SQL CE 服务的使用。我还删除了 SQL CE 连接的处理以及 finally 块,但错误日志保持不变。

连接的处置是否会导致问题?

【问题讨论】:

  • 可能不直接相关,但是:您正在通过它们的终结器处理您的 SQL 命令(以及可能的其他资源,例如 SQLCeConnection),而不是将它们放在 using 块中并处理它们当你完成了他们。我还会检查您安装的应用程序的路径等配置,最后,我怀疑您使用的是try { .... } catch { /* do nothing, not even log the error */ } 模式。
  • 是的,我正在这样做并使用 try/catch 模式。我也会看看连接的处理。谢谢。
  • 你不能跨线程共享命令和连接对象
  • @ErikEJ 我不知道我在这样做吗?你能详细说明一下吗?
  • 你能在你的问题中显示一些代码吗?我们可以猜测你在做什么,但看到会有很大帮助。

标签: vb.net visual-studio error-handling sql-server-ce microsoft-sync-framework


【解决方案1】:

我猜您正在尝试使用 Windows 身份验证连接字符串连接 SQL 数据库,而该人无权访问 sql 数据库。尝试使用用户 ID 和密码更改连接字符串。从"Data Source=URDATABASE;Initial Catalog=MYDATABASE;Integrated Security=True" 更改为"Data Source=URDATABASE;Initial Catalog=MYDATABASE;Uid=UrUserID;Pwd=MyPassWord;"

【讨论】:

  • 您好,感谢您的回复。我刚刚看到了。我正在查询本地 SQL CE 数据库,我的连接字符串是:Data Source=|DataDirectory|\MyDatabase.sdf;Max Database Size=4091 查询并同步到远程数据库时,连接字符串是Data Source=MYIPADDRESS;Initial Catalog=MYDATABASE;Persist Security Info=True;User ID=user;Password=MYPASSWORD
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多