【问题标题】:Is it possible to access a .mdf database without SQL Server?是否可以在没有 SQL Server 的情况下访问 .mdf 数据库?
【发布时间】:2012-04-28 18:59:54
【问题描述】:

我通过 SQL Server 创建了一个.mdf 文件并将其放入本地文件。我在没有安装 SQL Server 的计算机上运行我的程序。而且我还使用了来自System.Data.SqlClient 命名空间的类(即SqlConnection..)

我想与由 SQL Server 创建的.mdf 文件建立某种访问连接?有可能吗?

【问题讨论】:

    标签: c# sql-server mdf


    【解决方案1】:

    我认为不通过 SQL Server 引擎就不可能与 MDF 文件进行交互。您很可能会安装 SQL Server Express(如果您选择为 Visual Studio 添加/删除程序,这应该是一个选项,或者您可以download it separately from here - this is the 2008 R2 With Tools option),附加您的数据库,然后从您的程序连接到该引擎。

    许多在线教程会建议您使用User Instances 功能和AttachDbFileName。我建议您不要走那条路,因为它通常会导致混乱 - 许多用户通过 Management Studio 连接到数据库的一个实例,与他们的程序不同的实例,然后不要了解为什么一个人看不到另一个人所做的更新。 User Instances 功能已弃用,我非常希望将数据库正确附加到实例。

    在 SQL Server 2012 中,您可以下载新的 SqlLocalDb 运行时 (you want either the x86 or x64 SqlLocalDB.MSI file from here),因为它是一个无需维护的按需 SQL Server 引擎,因此该过程变得更加容易。但是请注意,您的数据库将升级到新的 11.0 文件格式,这意味着您将无法分离/附加或备份/恢复到旧版本(2008、2008 R2 等)。我加了很多troubleshooting techniques for new users starting with SqlLocalDb here

    【讨论】:

    【解决方案2】:

    您可以尝试使用OrcaMDF,这是一个开源项目。

    什么是 OrcaMDF?

    用于 MDF 文件的 C# 解析器。允许您读取表格、元数据和 来自 MDF 文件的索引,而不将其附加到正在运行的 SQL 服务器实例。

    (此描述取自项目页面)。

    Author's blog

    【讨论】:

      【解决方案3】:

      您需要 SQL 才能连接到 MDF。您可以将其转换为 SDF 并加载精简版(免费)。 http://msdn.microsoft.com/en-us/data/ff687142

      【讨论】:

      • 请注意,只有当您的数据库不使用 Compact Edition 不支持的任何功能或语法时,才能转换为 Compact。 Express(也是免费的)不是更安全的推荐吗?它不像“嵌入式”,但不太可能出现问题。
      • 使用 Express,您不需要使用 sqloledb。我对精简版不够精通,无法确切知道那里的交互有何不同,我只知道文件格式和功能集有很大不同。
      • SQL express 如果适用于 OP,则可以使用。使用 SQL Express,您可以以相同的方式连接到它。您必须使用带有 SQL CE (SqlCeConnection) 的新连接类。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2013-06-19
      • 2011-09-28
      • 1970-01-01
      • 2012-10-14
      相关资源
      最近更新 更多