none
写入access数据库后,程序引发异常 RRS feed

  • 问题

  • VS2010 + C#,程序中从远程服务器上的sql2005数据库中读取数据,然后一条条写入本地access2003数据库。调试发现,当写入数据量达到3000多条(对应access数据库文件约900多KB)后,经常导致应用程序崩溃,VS调试环境下提示:xxx程序出现错误,即将被关闭。换了另外一台机器同样在VS下测试,出错时则提示:已引发了未经处理的win32异常,IntelliTrace中断,看不到异常信息。因为程序出错时刻是不固定的,经反复测试,发现当写入数据库后,再打开第三方程序如IE等,再使用office去打开access数据库时,就很容易引发上述错误。把所有相关代码都加上try{}catch{},捕捉不到异常;在程序的最顶层注册异常事件
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    

    也不能获得UnhandledException 事件的触发。
    既然捕获不到这类错误的信息,只好自己从代码上找原因。把从服务器sql数据库获取数据的代码改成从本地另外一个存有记录的access数据库读取数据,然后写入空的access数据库中,反复测试了十几遍,没有发现异常。

    程序中使用OleDbConnection连接access,只实例化了一次,仔细检查并已确认open和close动作都是正确的。此外,我的代码中没有使用到API。
    会是什么原因呢?望高手指点,谢谢!



    • 已编辑 JSHZP 2011年11月21日 14:29
    2011年11月21日 14:25

答案

  • 发现当写入数据库后,再打开第三方程序如IE等,再使用office去打开access数据库时,就很容易引发上述错误。在操作access数据库的时候都是独占方式的,你如何能够通过office去打开?

    考虑到你后面测试的情况,是否和网络有关?(或者你不读取其他数据库,而是随机生成一些数据,看看是否还有异常出现?)

     


    family as water
    • 已标记为答案 JSHZP 2011年11月25日 9:40
    2011年11月21日 15:54
  • 就像你分析的一样,这样的异常不好猜。

    有没有试过把数据插入到SQL 数据库或者其他的数据库,而不是Access数据库? 因为我可能会是Access数据库的问题。

    还有如果引用的有第三方的产品的话,建议去咨询一下他们。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 JSHZP 2011年11月25日 9:40
    2011年11月23日 7:38
    版主

全部回复

  • 发现当写入数据库后,再打开第三方程序如IE等,再使用office去打开access数据库时,就很容易引发上述错误。在操作access数据库的时候都是独占方式的,你如何能够通过office去打开?

    考虑到你后面测试的情况,是否和网络有关?(或者你不读取其他数据库,而是随机生成一些数据,看看是否还有异常出现?)

     


    family as water
    • 已标记为答案 JSHZP 2011年11月25日 9:40
    2011年11月21日 15:54
  • 这几天,在不同情况下,反复测试了几百遍,发现有如下特点:

    一、很可能和数据库有关;

    二、错误不容易重复,也就是说,找不到某个一定会引发错误的特定的操作,数据库更新的数据越多越容易引发;

    三、和第三方程序有关,鼠标在不同程序(指第三方程序)之间切换焦点时,偶尔会引发(几百次中遇到过十多次),直接打开access数据库,则很容易引发(引发概率节约一半);

    错误发生后,错误提示如下:

    折腾了几天,目前对产生这个问题的原因毫无头绪,不知该怎么下手解决。望高手支招,谢谢!


    • 已编辑 JSHZP 2011年11月22日 12:39
    2011年11月22日 12:37
  • 就像你分析的一样,这样的异常不好猜。

    有没有试过把数据插入到SQL 数据库或者其他的数据库,而不是Access数据库? 因为我可能会是Access数据库的问题。

    还有如果引用的有第三方的产品的话,建议去咨询一下他们。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 JSHZP 2011年11月25日 9:40
    2011年11月23日 7:38
    版主