3

我正在开发一个使用关系数据库(SQL Server 2008)的项目。本地(本地)应用程序同时读取和写入数据库。我正在为 Azure(MVC2 Web 角色)开发一个不同的前端,它将使用相同的数据,但以只读方式。如果我正在部署一个传统的 Web 应用程序,我会使用 SQL Express 作为本地数据库,并通过对应用程序的更新(数据变化非常缓慢)或通过一些同步系统来部署更改。

使用 Azure,图片有点模糊(抱歉,我不得不这样做)。我似乎找不到任何信息来表明 SQL Express 是否可以在 Web 角色中工作,如果可以,如何做到这一点。有谁知道是否可以在 Azure Web 角色中使用 SQL Express?

如果强制,我可以做的其他选择:SQL CE 或使用 SQL Azure。两者都有许多缺点,而且绝对不够完美。

谢谢,埃里克

编辑 我认为我的情况可能不够清楚。

此数据不会在部署之间更改,并且只能从 Web 角色内部访问;它基本上是一个静态缓存。本地部分有点像红鲱鱼,因为它不会影响网络角色上的数据(除了作为其来源)。基本上,我想做的是有一个本地数据存储/缓存,我使用现有的 T-SQL/DAL 代码。

虽然我可以使用 SQL Azure,但它不会添加任何东西,如果有的话,只会增加额外的开销和故障点。我也可以使用 VM 角色,但这太昂贵/太复杂了。

在一个完美的世界中,我会将 MDF 打包到 cspkg 中(因此它与应用程序一起部署),然后在角色内本地使用它。如果没有办法做到这一点,那没关系,我需要弄清楚其他解决方案的优缺点。我们不是生活在一个完美的世界里。:)

4

5 回答 5

2

您可能能够使用自定义 VHD 运行 SQL Express,但您将无法依赖该 VHD 上存在的任何数据。VM 在重新启动时完全重置 - 重新启动后没有物理持久性。

如果您愿意,您也许可以在 Azure Blob 存储中找到整个 SQL Server 安装。

但是,在执行所有这些操作时,您将只能拥有一个可以使用该数据库的工作人员/Web 角色。请记住:SQL Server 数据库一次只能附加到一个 SQL Server。如果你想向外扩展,你必须为每个 web/worker 角色创建新的 SQL Server 实例。

除了成本问题之外,我想不出 SQL Express 中的任何东西都应该成为 99.9% 的应用程序的阻碍。

于 2011-03-13T23:43:32.800 回答
2

添加到 Jeremiah 的答案中:SQL Azure 应该为您提供 SQL Express 今天所做的几乎所有事情,并且您可以使用同步服务将本地 SQL Server 与 SQL Azure 同步。

如果您将 SQL Express 安装到 VM 角色中,则仅该实例每月就要花费大约 90 美元,外加 blob 存储(您需要一个云驱动器来保证持久性)。根据定义,VM 角色(或任何角色)必须支持横向扩展;如果出于某种原因要扩展到 2 个实例,则两个实例都需要它们自己的数据库副本,因此您需要为每个实例创建一个 blob 快照。

但请记住,如果您选择在 VM 中安装 SQL Express:一旦您使用 2 个实例,以及每个 Blob 存储实例 20GB,您每月的费用接近 200 美元,并且您正在维护您的 VM操作系统补丁、SQL Express 配置和更新、故障恢复程序等。相比之下,20GB 的 SQL Azure 虽然价格相同,为 200 美元,但将提供更好的性能并与同步服务一起使用,同时完全消除任何操作系统或数据库服务器管理任务从你那里。

于 2011-03-14T00:52:26.347 回答
1

要扩展 David 提到的内容,您可以在此处注册 SQL Azure Data Sync CTP2,它允许从 SQL Server 同步到 SQL Azure:http: //www.microsoft.com/en-us/SQLAzure/datasync.aspx

确保使用 CTP2,因为 CTP1 不支持 SQL Server。

于 2011-03-14T20:13:37.957 回答
1

添加到已经存在的答案以及任何想知道在云中运行 SQL Express 是否是个好主意的人:它作为临时存储区域确实有意义。考虑这种架构方法:假设您正在启动节点以运行作业。在每个节点的本地 SQL Express 中存储大量计算结果可能是一个好主意,并在节点上的作业完成时立即提供聚合响应。之后可以将不再热门的结果传输到外部 SQL 服务器以供将来报告/等。从容量/延迟/成本的角度来看,SQL Azure 可能不是存储海量结果的最佳选择,而且 ATS 并不总是符合要求,尤其是在涉及关系数据、性能或现有代码时。

于 2011-03-14T03:28:56.287 回答
0

如果它是只读本地缓存 - SQL CE 4 或 SQLite。

两者都有实体框架提供程序。

如果你正在给它写信——SQL Azure

于 2011-03-21T12:33:23.900 回答