【问题标题】:"An attempt to attach an auto-named database" error“尝试附加自动命名的数据库”错误
【发布时间】:2010-08-12 10:31:48
【问题描述】:

我正在使用 C#、Visual Studio 2010 在 Windows XP SP2 Professional 上制作桌面应用程序。

如果我直接从已发布的文件夹运行该应用程序而不运行安装程序或从调试文件夹运行它或只是调试应用程序,它不会给出此错误。但是,如果我从已发布的文件夹运行安装程序,然后从开始菜单运行它,则会出现此错误:

尝试为文件 C:\Documents and Settings\Desi\Local Settings\Apps\2.0\Data\K9KMBYK5.881\EKOOHKP2.0Y1\smas..tion_ddac366ea7cca062_0001.0000_c8a0800c5798ef15\Data\SmasDb 附加自动命名数据库.mdf 失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。

我正在将应用程序发布到“我的文档”中的文件夹。

C:\Documents and Settings\Desi\Local Settings\Apps\2.0\Data\K9KMBYK5.881\EKOOHKP2.0Y1\smas..tion_ddac366ea7cca062_0001.0000_c8a0800c5798ef15\Data\1.0.0.0(这个数据 目录只有 user.config 文件。)

C:\Documents and Settings\Desi\Local Settings\Apps\2.0\LWGCKB30.QZJ\E81QYJON.ZX9\manifests (contains smas..tion_ddac366ea7cca062_0001.0000_none_a42d8ca7a940cae4.cdf-ms smas..tion_ddac366ea7cca062_0001.0000_none_a42d8ca7a940cae4.manifest smas. exe_ddac366ea7cca062_0001.0000_none_3d144d2ce016963b.cdf-ms smas.exe_ddac366ea7cca062_0001.0000_none_3d144d2ce016963b.manifest)

C:\Documents and Settings\Desi\Local Settings\Apps\2.0\LWGCKB30.QZJ\E81QYJON.ZX9\smas.exe_ddac366ea7cca062_0001.0000_none_3d144d2ce016963b(包含 SMAS.exe.config, SmasDb.mdf, SmasDb_log.ldf)

C:\Documents and Settings\Desi\Local Settings\Apps\2.0\LWGCKB30.QZJ\E81QYJON.ZX9\smas..tion_ddac366ea7cca062_0001.0000_c8a0800c5798ef15(此目录包含所有文件,包括所有 dll、SmasDb.mdf 和 SmasDb_log.ldf , SMAS.exe.config, 一些 .cdf-ms 和 .manifest 文件与上面的 .cdf-ms 和 .manifest 不同)

【问题讨论】:

    标签: c# database visual-studio


    【解决方案1】:

    您是否验证过长路径(C:\Documents and Settings\USER\Local Settings\Apps\2.0\Data\MP63M1NA.ZG5\BCOVJJWN.C53\smas..tion_ddac366ea7cca062_0001.0000_9c79a710d42895b6\Data\SmasDb.mdf)看看那里是否真的有数据库?

    从错误信息中的三个选项中,我会选择:或者指定的文件无法打开

    您必须考虑要将数据库放在哪里(在非开发人员计算机上),并确保将其复制到那里。

    查看关于|DataDirectory| 的帖子Working with Databases in Visual Web Developer 2005 Express Edition语法。

    【讨论】:

    • 这就是问题所在。以上目录仅包含 user.config 文件。所有其他文件都在其他目录中。为问题添加了更多详细信息。
    • 如何确保将数据库复制到数据目录?
    • 我认为我做了一个非常糟糕的设计。 connectionString、DataSet 和所有类都在同一解决方案中的另一个 dll 项目中。 (我这样做是因为要求有一个 dll 而不是在主项目中做所有事情) 现在可能的解决方案是确保将数据库文件复制到 DataDirectory。该怎么做?
    • 您可以更改 |DataDir| 的位置指向,见social.msdn.microsoft.com/forums/en-US/sqlce/thread/…
    • 万岁!!!!!! ClickOnce 设置现在正在运行。我在安装文件夹附近(|DataDirectory| 附近)添加了手动复制 smasdb.mdf 的代码。应用程序从开始菜单运行正常,没有错误
    【解决方案2】:

    您正在使用 ClickOnce 并使用 SQL CE 数据库? 您是否将数据库包含在已发布的应用程序中?

    【讨论】:

    • 是的,我正在使用 ClickOnce 和 SQL 数据库。并且数据库包含在已发布的应用程序中
    猜你喜欢
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多