16

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

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

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

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

我很难理解在选择一种方式或另一种方式之间有什么技术原因......

有人可以描述差异以及将使用什么标准来选择一种方式与另一种方式?(或指向网站参考...)

谢谢!

-阿迪娜

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

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

3 回答 3

13

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

本地数据库可以采用两种形式,具体取决于您创建它的方式。有关详细信息,请参阅如何:管理项目中的本地数据文件

客户端-服务器,SQL Express

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

本地数据库,SQL Express

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

本地数据库,精简版

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

SQL Express

当 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 中有关于此主题的文章。

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

结论

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

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

于 2011-06-30T01:05:12.433 回答
0

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

于 2011-06-30T01:06:07.160 回答
0

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

于 2011-06-30T00:48:09.307 回答