1

我正在使用 Visual Studio 2005。我创建了一个项目,而不是 Web 项目,只是 Windows 应用程序。

我记得Access数据库文件可以添加到项目中。我不需要连接到服务器,可以检索数据。我想对 SQL 数据库文件做同样的事情。

我做了以下步骤:

  1. 右键单击项目。
  2. 选择添加现有项目
  3. 浏览 *.mdf 文件。
  4. 出现数据源配置向导并显示此消息

    从数据库中检索信息时出错:由于启动用户实例的进程失败,无法生成 SQL Server 的用户实例。连接将被关闭。

我需要帮助将 mdf 文件添加到我的项目中。

4

4 回答 4

7

首先,MDF 文件只能由 SQL Server 实例读取。如果您部署 MDF,那么您的应用程序必须在安装期间连接到最终用户提供的 SQL Server,或者必须部署自己的实例,在后一种情况下是 SQL Server Express Edition 实例。请参阅如何:安装 SQL Server Express。使用 Visual Studio 2008,您可以将先决条件添加到您自己的应用程序设置 MSI,请参阅“安装”用于 Visual Studio 2008 SP1 的 SQL Server 2008 Express ClickOnce 引导程序

第二个问题是,尽管人们普遍认为相反,在没有 LDF 的情况下单独分发 MDF 会使您陷入痛苦的世界。您最终可能会分发需要 LDF 完成恢复并进入一致状态的不一致 MDF。

但更严重的问题是您计划部署二进制文件 (MDF) 而不是用于数据库部署的脚本。这注定要失败。一旦您计划发布应用程序的 v. 1.1,您将面临如何用新的 MDF 替换用户 MDF(现在包含用户添加的数据)的重要问题。这就是为什么总是部署升级脚本要好得多,而忘记项目中的 MDF。

于 2011-04-28T17:02:30.080 回答
1

您可以从应用程序中的 Access 文件 (*.mdb) 中读取,而无需任何其他要求,因为 Access 使用的核心 Jet 引擎作为 Windows 的一部分包含在内 - 它是内置的。Sql Server 不作为 Windows 的一部分包含在内,因此你不能在你的应用程序中使用 *.mdf 文件,除非你已经安装了 Sql Server 并且你有相应的权限。

可以随您的应用分发 Sql Server Express Edition 或 Sql Server Compact Edition(推荐)。另一种选择是 SqlLite,它有一个完全托管的数据库引擎可用。

于 2011-04-28T16:53:18.820 回答
0

.MDF 是 sql server DB,而不是 MS Access。MS 访问权限是 .MDB。您无法单独读取 .MDF。它还需要一个日志文件 (.LDF)。如果您将其附加到本地实例,它将为您创建一个新实例。然后,您可以连接到该数据库。

于 2011-04-28T16:48:10.733 回答
0

为了解决部署问题(您的 .mdf 文件和代码的更新版本),您可以在您的应用程序中使用一个实用程序,它可以为您在应用程序中使用的每个表创建 .xls 文件(备份您的数据库)。现在您可以轻松地在 SQL Server 中导入这些 .xls 文件并创建新版本的 .mdf 文件并在最新代码中附加相同的文件。现在您的应用程序的新版本已准备好部署......!

于 2013-07-04T06:43:48.650 回答