我们即将推出一款双 Web/内部事务应用程序,其中每个客户都有自己的数据库。每个数据库都非常小 - 每个不到 50MB,因此我们想知道使用 SQL Express 2008 而不是完整的 SQL Server 是否合理。
这似乎具有在服务器之间分配磁盘 I/O 的优点,同时节省了大量 $$$(因为小型 15K 驱动器和二手双核服务器都很便宜)。如果在某个时候我们需要太多服务器,我们可以升级到 SQL Server...但对于数十名内部用户来说,这似乎太昂贵了(特别是因为我们需要一个故障转移箱)。
考虑到我们的数据库规模较小,1GB 内存和单个处理器上 4 个核心的使用率听起来并不太严格。我们的并发用户数永远不会超过 200 个,而且大多数操作将更具事务性(这似乎更倾向于使用大量高速磁盘而不是大量 RAM/CPU,对吧?)
我是否忽略了 SQL Server Standard 的任何优势而无法证明最初额外投资 5-20K 美元是合理的?
答案1
SQL 服务器的其他版本为您提供诸如 SQL 代理之类的功能,以便您可以安排数据库维护和其他作业。
只要您的数据库能够满足 Express 版本的限制,那就没问题了。
SQL Server 需要大量 RAM。内存越多越好。由于 SQL Server 无法将数据加载到缓存中,因此会给磁盘带来额外负载。您应该查看 SQL Server 的 Web 版或工作站版。这些版本的限制比 Express 版更高,但成本低于标准版。
如果您确实从 Express 版本开始,那么您可以在购买许可证后随时升级到标准版本。
答案2
我使用 Express 版本时遇到的一些生产问题及解决方法:
计划备份
- 没有 SQL 代理
- 解决方法:使用您想要运行 SQLCMD 备份脚本的任何调度程序或快递维护
- 也可以看看:如何使用 SQl Server Express 安排每日备份?
安全信息系统
- SQL Express 2008 确实有导入/导出数据向导,但 Express 版本的 dtsexec 运行时不会运行所有 SSIS 包
- 解决方法:您可以使用开发人员版本开发 SSIS 包。如果您在网络中有一个标准版本,则可以从中安排和运行 SSIS 包。您甚至可以从开发人员版本运行 SSIS 包,只要它不违反许可证
- 也可以看看:
我可以使用 SQL Server 2008 Express/Web 或 Workgroup 运行 SSIS 包吗
SSIS 与 Sql Server 2005 express
分析
- 没有 SQL 探查器
- 解决方法:尝试SqlProfiler 快速版
- 警告:我发现它在解决生产紧急情况时并不总是有用,例如当 sqlexpress 占用 100% 的服务器处理器容量时。在这种情况下,我无法让分析器产生任何跟踪。
- 也可以看看:哪种分析器可以与 sql express 一起使用?
答案3
如果您阅读了 SQL Server 许可证,则如果被动服务器仅用于故障转移并且在您的第一台服务器发生故障之前它不提供查询,则您不需要为被动服务器购买额外的许可证。
我们已经使用 SQL Server Express 很长时间了,它非常好用,比早期的 MSDE 好很多,我们有 200 多个并发连接,但我们只有一个 2GB 大小的数据库,一切都很顺利。只要我们避免昂贵的连接并进行良好的索引,我们就不会遇到任何问题。现在我们使用 SQL Standard,但只要您的数据库大小超过 4GB 并且您的用户数量少于 200-500,您当然可以使用 SQL Express。
SQL Server Express 占用的内存空间较少,约为 200MB,而标准版占用的内存空间约为 1.5GB,这可能是因为标准版会进行大量缓存。与标准版相比,Express 中的查询速度会慢几毫秒。不幸的是,Express 版不使用多核 CPU(这是有限的功能),因此无论您有 2 核还是 4 核,它都不会有很大帮助。
答案4
您是否考虑过使用免费的 DBMS(MySQL、PostreSQL……)?这样可以减轻您的许可问题?
如果这不是一个选择,那么 SQL Server Express 似乎是一个很好的解决方案。