【问题标题】:SQL LocalDB vs SQL Server CESQL LocalDB 与 SQL Server CE
【发布时间】:2012-03-28 03:53:35
【问题描述】:

我有一个小项目,将在 1 台计算机上拥有 1 个用户。数据库将相当小(可能小于 1 mb 的数据)。我计划为该项目使用 WPF 和实体框架。

我为我的项目提出了 2 个潜在的数据库解决方案:SQL Server CESQL Server Express LocalDB(使用 SQL Server 2012)。我从来没有使用过这些,我更习惯于使用完整的 SQL Server 2008 安装。

我还希望它易于安装在客户端上。理想情况下,我只想将一堆文件放在一个文件夹中(连同我的 .exe 文件)。

那么这里的任何人都可以建议我使用最好的技术吗?

谢谢!

【问题讨论】:

    标签: sql-server entity-framework sql-server-ce sql-server-express sql-server-2012


    【解决方案1】:

    请参阅 Introducing SQL Server Express Local DB Runtime 演示文稿 - 提供了很好的概述。

    LocalDB 的巨大优势在于它是真正的 SQL Server——它是 SQL Server Express 的一个特殊版本,但它基本上支持“真正的”SQL Server 所拥有的一切——空间数据类型、存储过程——你可以说。

    另一方面,SQL Server Compact Edition 是一个非常缩小的版本 - 不支持许多功能和数据类型。它更小,更“敏捷”——但它缺乏很多冲击力。

    我个人会选择带有 LocalDB 运行时而不是 SQL Server CE 4 的 SQL Server Express - 除非您特别需要 SQL Server CE 的小尺寸(例如在移动设备上)。

    还可以在 ErikEJ 出色的 Everything SQL Server Compact 网站上查看 comparison between SQL Server CE 3.5, CE 4.0, SQL Server Express 2008 R2 and SQL Server 2012 Express LocalDB

    【讨论】:

    【解决方案2】:

    这取决于,但根据您的要求(即非常少量的数据和 XCopy 安装),您唯一的选择是 SQL Server Compact,因为 SQL Compact 在磁盘上的占用空间约为 18 MB,而 LocalDB 为 160 MB,并且LocalDB 需要管理员安装(仅作为 MSI 提供) - 但如果 SQL Server 兼容性更重要,LocalDB 是最佳选择(如 marc_s 所述)

    【讨论】:

      【解决方案3】:

      忘记所有模糊的“它更容易”、“它更小”、“它缺乏冲击力”或“它更轻”的答案(无意冒犯),我认为在面临选择时应该关注两者之间的主要区别:

      • Lo​​calDB 处于进程外。
      • CE 正在进行中。

      是否作为申请流程的一部分运行有很多含义,可能应该在单独的问题中进行探讨。

      最明显的一点是,如果您需要使用进程内 DBMS(例如 CE)从多个应用程序访问数据库,所有应用程序都将使用自己的 cpu-time 直接访问数据库文件。同步它们真的很困难,实现这一点有助于理解为什么 CE 的功能较少(以及许多其他东西)。

      另外请注意,虽然人们可能担心运行相同 CE 代码的多个进程可能会占用过多的内存,但请记住,操作系统足够智能,可以在多个进程之间共享其页面缓存中的页面,因此一个真正的不是问题。

      LocalDb 只是一种基于每个用户自动管理普通 Express 实例的方法(它与 SQL Server Express 没有什么不同,是一回事)。

      【讨论】:

        【解决方案4】:

        我真的不想在这里和 ErikEJ 一起去。我没有声望投票赞成他的答案,但鉴于您要求的目标 SQL CE 确实是最快的进出。 marc_s 在 SQL CE 的“缺少的功能”VS LocalDB 上提供的许多比较问题通过您使用 EntityFramework 得到缓解(不支持过程 T-SQL,但如果您使用 EF 和 Lambda 和 LINQ,则不会真的是个问题)。

        【讨论】:

        • 是的。我看不出在处理本地文件时需要存储过程的原因。我也会选择 CE。
        【解决方案5】:

        请参阅 this page 了解创建 LocalDB 背后的一些背景

        它是专门为开发人员创建的。它易于安装,无需管理,但在 API 级别与其他 SQL Server 版本兼容。在这方面,它就像免费 SQL Server Express 版的轻量级版本。

        虽然这看起来与 SQL Server Compact 相似,但也有区别:

        • 执行模式:SQL Server Compact 是一个进程内 DLL,而 LocalDB 作为一个单独的进程运行。
        • 磁盘使用情况:所有 SQL Server Compact 二进制文件大约需要 4MB,而 LocalDB 安装需要 140MB。
        • 功能:SQL Server Compact 提供查询等核心 RDBMS 功能,而 LocalDB 提供更丰富的功能集,包括存储过程、几何和地理数据类型等。

        在我看来,LocalDB 通常用于离线开发,以确保您开发的代码与您的生产 SQL Server 数据库 100% 兼容。

        【讨论】:

        【解决方案6】:

        此外,如果隐藏您的知识产权/架构/数据以防止用户轻松访问很重要,SQL CE 可以进行密码保护/加密。 可以从管理工作室轻松打开 SQL Local db。

        【讨论】:

        • 如果应用程序可以打开数据库,那么用户也可以。
        • 我认为这就是为什么他说要隐藏 easy 访问。普通用户必须知道数据库密码才能进入。
        • 不幸的是,这一点是最昂贵的,这让我到现在都无法决定迁移到 LocalDB :(
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多