将* .mdf文件添加到C#Project

时间:2011-04-28 16:24:28

标签: c# sql mdf

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

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

我做了以下步骤:

  1. 右键点击项目。
  2. 选择添加现有项目
  3. 浏览* .mdf文件。
  4. 出现DataSource配置向导,它显示此消息

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

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

4 个答案:

答案 0 :(得分:7)

首先,MDF文件只能由SQL Server实例读取。如果部署MDF,则应用程序必须在安装期间连接到最终用户提供的SQL Server,或者必须部署自己的实例,在后一种情况下是SQL Server Express Edition实例。见How to: Install SQL Server Express。使用Visual Studio 2008,您可以为自己的应用程序设置MSI添加先决条件,请参阅"Installing" the SQL Server 2008 Express ClickOnce Bootstrapper for Visual Studio 2008 SP1

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

但更严重的问题是您计划部署二进制文件(MDF)而不是脚本以进行数据库部署。这注定要失败。一旦你计划发布你的应用程序的1.1版,你将面临如何用你的新MDF替换用户MDF(现在包含用户添加的数据)的非平凡问题。这就是为什么总是更好地部署upgrade scripts,并忘记项目中的MDF。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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