【问题标题】:What is the difference between a Local Database in C# and a SQL Server Management Studio created database?C# 中的本地数据库和 SQL Server Management Studio 创建的数据库有什么区别?
【发布时间】:2011-06-30 00:45:59
【问题描述】:

我正在使用 MS Visual C# 2010 Express 创建一个需要数据库的应用程序。

我了解到似乎有两种方法可以通过此应用程序创建/使用 SQL 数据库。

第一个似乎是在 C# 中,我可以通过在解决方案资源管理器中右键单击我的应用程序并单击“添加”->“新项目”->“本地数据库”来创建“本地数据库”。然后它显示在数据库资源管理器中,我可以使用它。

另一种方法是我使用 SQL Server Management Studio 创建一个数据库,然后从 C# 代码中打开一个到它的连接 (SQLConnection... yada yada yada) 并使用它。

我很难理解在选择一种方式或另一种方式之间存在哪些技术原因...

谁能描述其中的区别以及选择一种方式与另一种方式的标准是什么? (或指向网站参考...)

谢谢!

-阿迪娜

其他信息... 现在,这确实是一个爱好项目,因为我已经解决了一些问题。

  1. 我是唯一的开发人员,并且在一台机器上工作
  2. 该应用程序旨在成为独立运行的应用程序 - 而不是在 浏览器或以任何方式通过网络。我知道那不是方向 宇宙正在走向,但如上所述,这是一种爱好 我需要完成的项目以解决其他一些问题。
  3. 我认为我没有任何需要或意图使用多个应用程序 在这个数据库上工作。

【问题讨论】:

  • 我相信Add New Item -> Local Database 会将 SQL Server Compact Edition (CE) 数据库(单个 .sdf 文件)的实例添加到您的项目中。这是一个“嵌入式”单用户本地数据库 - 它不是 SQL Server Express(并且不是服务器产品)!

标签: sql-server database visual-c#-express-2010 local-database


【解决方案1】:

实际上你有三个选项。您没有描述的选项是您使用 SSMS 创建数据库,然后设置到文件的连接并选择由 SSMS 创建的 MDB 文件(您可能需要先使用 SSMS 卸载数据库以使 SQL Express 释放其文件锁)。当您创建与文件的此连接时,系统会提示您是要连接到它所在的位置,还是将其添加到您的项目中。

本地数据库可以采用两种形式,具体取决于您创建它的方式。详情请咨询How to: Manage Local Data Files in Your Project

客户端-服务器、SQL Express

如果您使用 SSMS 设置数据库并通过 SQL Express 连接到它,那么您的项目中没有本地数据库,您有一个服务器恰好位于工作站本地的数据库。

本地数据库,SQL Express

如果您使用 SSMS 设置数据库,卸载数据库并将文件添加到您的项目中,那么您将拥有一个使用 SQL Express 私有实例的本地数据库。

本地数据库,精简版

如果您使用 Visual Studio 菜单创建一个新数据库,您将拥有一个本地精简版数据库。

SQL 速成

当 Visual Studio 启动调试时,会启动 SQL Server Express 的私有命名实例,并且应用程序使用共享内存而不是网络协议与之通信。

但是,绝对没有什么可以阻止您安装作为服务运行的 SQL Express 实例。您可以挂载相同的数据库文件(或它的副本)并使其可用于网络。您甚至可以将它安装在 SQL Standard 甚至 SQL Enterprise 的实例上。

那你为什么要搞砸本地实例呢?它对多开发人员团队具有优势,因为开发人员可以在不干扰其他人的情况下更改他们的架构。它允许开发桌面(而不是网络)软件,尽管在当今时代,对该功能的需求正在减少。

根据您的开发环境中有多少硬件,我个人不会使用本地数据库。 SQL Server 是一个内存猪,我更希望它在一个完全独立的盒子上运行。

注意事项

  • 除了 Compact 和 Micro 版本之外,所有 MSSQL 版本的 TSQL 都完全相同。
  • 在环境方面,SQL Express 将数据库大小限制为 4G,尽管我相信 R2 会增加到 8G。这对开发来说不太可能很重要,但可能会影响测试人员。
  • 某些 SQL Server Reporting Services 功能在廉价版本中不可用。

SQL Server 精简版

这方面的信息非常少。 Microsoft 的版本比较不考虑 Compact 或 Micro 版本。 Compact 版网页上的一些宣传语声称完全兼容 TSQL。 SDF 是一个多合一文件;没有单独的日志文件。从 SDF 到客户端-服务器的路径肯定不如 SQL Express 直接,但它似乎是一个受支持的选项,因为 msdn 中有关于此主题的文章。

Compact 版本提供复制工具,因此它可以用作偶尔连接的系统(又名公文包模型)中的本地数据库缓存。公文包模型需要更仔细的整体系统设计,但它有很多优点:单用户独立系统的所有性能和简单性以及客户端-服务器系统的大部分优点。

结论

出于您的目的,我会选择精简版选项。其他解决方案的开销和复杂性旨在解决您没有也不会遇到的问题。它们旨在解决具有正式发布周期的网络化、大规模环境中的团队开发问题。

你很幸运,可以保持简单。无论如何,Visual Studio 中的工具更好。

【讨论】:

  • 我相信Add New Item -> Local Database 会将 SQL Server Compact Edition (CE) 数据库(单个 .sdf 文件)的实例添加到您的项目中。这是一个“嵌入式”单用户本地数据库 - 它不是 SQL Server Express(并且不是服务器产品)!
  • @Peter 我们可以稍后在“本地 CE sql 服务器”上部署吗?
  • 部署到哪里?如果您希望 setupkit 可以将应用程序和 CE 数据库部署到 progfiles\appfolder 中,那么可以;这是 CE 技术的主要目的。
  • @PeterWone 在这个应用程序的版本控制方面,使用精简版的可行性如何?部署和安装后,用户将开始将数据填充到他们的版本中。以后我们如何更新版本?
  • CE 在版本控制方面与 Enterprise 存在相同的问题。尽管我不喜欢 Redgate,但我建议您购买他们的产品,这是对数据库进行版本控制的唯一实用方法。您可以使用它来将更新后的数据库与客户拥有的数据库进行比较,并生成数据保留模式更新脚本。
【解决方案2】:

要更详细地了解正在发生的事情:查看CREATE DATABASE 语句的设置和其他功能。我不确切知道,但一个应用程序可能使用不同的默认设置。进一步阅读文章,了解“模型”数据库如何发挥作用。

【讨论】:

    【解决方案3】:

    本地数据库使用缩小版的 SQL Server - Express 精简版 (CE)。存在许多技术限制,但最重要的是本地数据库仅可用于运行应用程序的实例。另一方面,数据库服务器可以被其他应用程序或同一应用程序的其他实例访问。实际上,由所有看到相同数据的多个用户共享。

    【讨论】:

    • 问题是使用一个应用程序创建数据库而不是另一个;不是本地安装 SQL Server 和服务器上更高版本之间的区别。
    • @Jeff:感谢您的参与。在我编辑或删除我的答案之前,我会让@adeena 权衡。在我看来,问题是是使用 VS 创建的数据库还是来自 SSMS 的数据库。差异主要归结为可访问性,我试图谈到这一点。
    • 我相信Add New Item -> Local Database 会将 SQL Server Compact Edition (CE) 数据库(单个 .sdf 文件)的实例添加到您的项目中。这是一个“嵌入式”单用户本地数据库 - 它不是 SQL Server Express(并且不是服务器产品)!
    • 谢谢!我在上面的原始帖子中添加了更多关于我的预期用途的详细信息。至少对于这个应用程序 - 它意味着在单台机器上独立运行 - 可访问性不是问题。但我会牢记这一点,以备将来可能出现的应用......
    • @marc_s:是的,你在 CE 上是对的,而不是 Express。最后,重要的部分是它不是您提到的服务器...它在您的应用程序的进程中运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多