【问题标题】:Visual Studio VB.NET Database Explorer "Unspecified Error"Visual Studio VB.NET 数据库资源管理器“未指定错误”
【发布时间】:2013-04-14 20:58:13
【问题描述】:

我整天都在寻找解决此问题的方法,但找不到可行的方法。基本上,我已经通过 Visual Studio 连接到 Access 数据库一段时间了(我使用 Access 数据库是有原因的),但突然之间它无法连接。现在,每当我尝试添加数据库连接时,我都会收到“未指定错误”。我在这里搜索过,阅读了 MSDN,重新安装了 Visual Studio,但似乎没有任何效果。如果我转到“数据库资源管理器”,更改为 Access 数据库,浏览文件,然后点击“测试连接”/“确定”,我将收到错误消息。它也不是特定于文件的,它发生在所有人身上。

有什么想法吗?这里真的需要一些帮助。

【问题讨论】:

    标签: database vb.net visual-studio-2010 ms-access jet


    【解决方案1】:

    一些可能有帮助的想法:

    • 确保您的项目明确针对 x86 代码,而不是 x64 或 AnyCPU。
      Access Jet (.mdb) 只能在 32 位下工作,如果您使用的是 ACE(对于新的 .accdb 数据库格式),您可能也使用 32 位版本的驱动程序。
      您不能混合使用 32 位和 64 位代码和数据库驱动程序,只要确保一切一致即可。

    • 您的安装可能已损坏。
      如果您可以在另一台机器上执行相同的步骤并且它在那里工作,那么您可能需要重新安装 VS(先尝试重新安装 ACE driver 以查看是否可以解决问题)。

      李>

    【讨论】:

    • 这已解决,但不是 100% 确定如何解决。这是我的步骤:1)检查以确保平台明确设置为 x86 2)重新安装 ACE 驱动程序 12.0 3)重新启动计算机,重新启动 VS 注意:此时,它仍然无法工作(非常令人沮丧)4)通过解决方案资源管理器,右键单击,添加现有项,选择数据库。无论出于何种原因,这将允许访问。 5) 删除了添加到解决方案资源管理器的数据库和数据集 6) 返回数据库资源管理器,一切正常!新司机和笨运气的结合!
    • 跟进:问题依旧;但是,我认为真正的问题是与在 Windows 启动时启动的 SQL 实例发生冲突。如果我进入任务管理器并终止 sqlwrite 和 sqlserver 的进程,Visual Studio 将通过数据库资源管理器进行连接。
    • @JohnGalt 所以这个问题与 Access 本身无关,但似乎与 VS 和那个 SQL Server 实例之间的其他一些冲突有关。您安装了哪个版本的 SQL Server?似乎在某些情况下,某些 SQL Server DLL 将替换 VS 预期的那些并会导致奇怪的行为:[Visual Studio 数据库工具错误][social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/… 在 MSDN 论坛上。
    • 这是关于此问题的另一个简短更新。它不仅仅与与 SQL 实例的冲突有关;即使在我“解决”了这个问题之后,我仍会继续收到“未指定的错误”。我发现在我的系统上工作的方法是消除任何 SQL 实例冲突,然后打开 Visual Studio 并在开始页面上,在打开特定项目之前,通过左侧的数据库资源管理器连接到数据库。这连接得很好,但如果我点击进入项目,它不会。仅供参考。
    【解决方案2】:

    在您访问数据库的代码块周围放置一个 try/catch 并检查返回的错误详细信息。

    Try
      'Your code here
    Catch ex as exception
      msgbox(ex.Message)
    Finally
      'any code you want here like close connections etc
    End Try
    

    一旦您获得更多信息,请在此处发布,因为“未指定的错误”并没有说明很多内容,您也没有发布任何代码,因此很难看出会发生什么。

    【讨论】:

      【解决方案3】:

      我刚刚在连接到 MS Access 2013 的 VSB2013 上也遇到了这种情况。

      我也解决了一点,我不完全理解为什么它会如此稳定

      注意 - 当我循环浏览 120 条 ish 记录时会出现问题。该过程是读取下一条记录 - 过程 - 读取下一条记录等。记录类似,需要一些其他数据库读取来处理记录。 Unspecified 错误发生在记录/周期 79 但记录非常相似。

      在我的调查中,我发现以下所有 3 个都可以正常工作(即 120 次循环发生且没有错误) - 但显然前 2 个仅用于调试

      解决方案 1 - WORKS)在循环中插入一个 msgbox - 消息框报告即将处理的循环号和记录键

      解决方案 2 - 有效)将 msgbox 替换为一行,该行将相同的文本附加到我的表单上的富文本框中,并带有 Cr/Lf。

      解决方案 3 - 有效)将 RTB 更新替换为 Threading.Thread.Sleep(15) 行。调整睡眠的毫秒数表明 15 及以上在我的代码中始终有效。 9 及以下的值始终失败。 10 到 14 之间的值显示不一致的结果。

      据我所知,sleep 方法暂停循环以允许其他事件和垃圾收集发生。这是否类似于我们在 VB6 之前使用的 DoEvents。

      这就是我所知道的。 问候 杰夫

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-05
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        相关资源
        最近更新 更多