【问题标题】:Can .mdf use as embedded database?.mdf 可以用作嵌入式数据库吗?
【发布时间】:2014-02-10 19:11:34
【问题描述】:

我是 C# 和 SQL Server 数据库的新手,所以这可能是一个愚蠢的问题,但我很困惑。

我想在客户端安装我的应用程序时自动在客户端计算机上设置嵌入式数据库。我知道有 SQL Server Compact Edition,但 SQL Server CE 有很多限制。

我可以将.mdf 文件用作嵌入式数据库吗?如果是,那么如何在客户端机器上自动设置它?还是有其他方法可以解决我的问题?

【问题讨论】:

  • 是的,这可以做到。如果您不需要多个数据库,您也可以考虑使用 SQLLite
  • 此处与 @drew_w 矛盾:但 NO 不能这样做 - 为了使用 .mdf,您始终必须安装某种形式的SQL Server 服务器端 组件。 .mdf 文件不能被任何“嵌入式”数据库使用,您可以将其作为一组 DLL 随应用程序一起提供 - .mdf 需要 SQL 服务器 才能运行
  • 显然有办法,但并不简单:stackoverflow.com/a/10800781/542417
  • @marc_s 从技术上讲是正确的,但我认为 SQL Server LocalDB 很有可能足以满足 OP 的要求,尽管实际上有充分的理由不将其称为“嵌入式”。跨度>
  • @hvd:好的 - 但即使是“LocalDB”也需要安装!您不能只随应用附带几个 DLL(我认为这是“嵌入式”数据库)——它实际上仍然是一个 服务器,运行在应用运行的那台 PC 上

标签: c# sql-server sql-server-express


【解决方案1】:

我会推荐使用 SQLite。部署起来更简单。此外,SQL Server Compact 似乎已停产。

Is SQL Server Compact discontinued from Visual Studio 2013?

您可以使用不需要在客户端计算机上进行任何安装的 SQLite。

SQLite 依赖于 Visual C++ 运行时,但您不需要在客户端计算机上安装它。 system.data.sqlite 下载页面包含几个已经包含运行时的“静态”包。

所有“静态”包都包含本机或混合模式程序集 静态链接到适当版本的 Visual 的二进制文件 C++ 运行时。通常,这些包用于以下情况 客户机器可能没有必要的 Visual C++ 版本 运行时已安装,由于限制无法安装 特权。

例如,在我的机器上,我运行的是 Windows 8.1 x64,所以我进入了 64 位 Windows (.NET Framework 4.0) 的预编译静态链接二进制文件并下载了 sqlite-netFx40-static-binary-x64-2010-1.0 .90.0.zip。

此二进制包包含 x64 版本的所有二进制文件 System.Data.SQLite 1.0.90.0 (3.8.2) 包。视觉 C++ 2010 x64 的 SP1 运行时是静态链接的。 .NET 框架 4.0 是 必填。

然后我解压缩包并运行 test.exe 以确保一切正常。需要零安装。

【讨论】:

  • 谢谢老兄。这真的很有帮助。但我的客户一直更喜欢 sql-server 数据库。 :( 有什么方法可以使用 .mdf 或 sql-server express 作为嵌入式数据库?如果没有,那么最后一个选项对我来说是 SQLite。
猜你喜欢
  • 2011-09-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多