我的网站是一个使用 VS 2012 构建的 .net 4.5 mvc 网站。我的 app_data 文件夹中有一个 SQL Server Compact DB。一切都在我的本地主机上运行良好。我部署到 Azure 网站并收到此错误?
无法找到请求的 .Net Framework 数据提供程序。可能没有安装。
我用谷歌搜索并得到了很多可能的答案,但没有一个是专门针对 Azure 和 SQL Server Compact 的。所以我的问题很简单。部署到 Azure 共享托管服务器的 Windows Azure 网站是否支持 SQL Server Compact?如果是这样,我需要做什么来消除上述错误并使其正常工作?
最佳答案
当然可以在 Windows Azure 上使用 SQL Server Compact。但是,您需要问自己:
我会更改数据库中的任何内容吗?
这包括添加、更新和删除数据。如果这样做,则不应在 Windows Azure 上使用 SQL Server Compact。因为,如果您在 Windows Azure 上使用 SQL Server Compact 并更改数据库中的任何内容,您将遇到两个问题:
- 数据不会被复制。
- 您可能会面临丢失数据的风险。
数据不会被复制
如果您更改数据库中的任何内容,更改将保留在本地。这意味着,如果您有多个实例运行您的 Web 应用程序,那么每个 Web 应用程序都将拥有自己的数据库,如果您更改其中一个实例中的某些内容,则该更改不会复制到其他实例,这将导致不可预测的行为在您的应用程序中。
您可能会丢失数据
如果在部署后更改数据库中的任何内容,则可能会丢失数据,因为 Windows Azure 可能决定将实例重新部署到另一台虚拟机或物理机。发生这种情况时,将使用您最初上传到 Windows Azure 的部署包来设置新实例,并且该包不包含您对数据库所做的任何更改。由于多种原因,这种重新部署可能随时发生。
结论
那么,Azure 上的 SQL Compact 呢?当然,如果您的数据是只读,那没问题。但请注意,您将无法获得使用 SQL Azure 所获得的性能。但如果您的需求日后发生变化,您始终可以将应用程序从 SQL Server Compact 迁移到 SQL Azure。
如果您想将 SQL Server Compact 与 Windows Azure 一起使用,可以使用“private deployment”方法,如“ErikEJ”博客中所述。
编辑: Microsoft 宣布他们现在提供 1 free 20 MB SQL Azure Database对于每个 Azure 订阅。这意味着您可以使用免费的 SQL Azure 数据库创建订阅并创建免费网站。 (只要小于 20 MB)您还可以免费拥有与同一 SQL Azure 数据库关联的多个网站。因此,如果您考虑在 Windows Azure 上使用 SQL Server Compact,因为您的数据库非常小并且您不想为 100 MB 的数据库付费,那么您可以考虑此选项。在大多数情况下,这将是一个更好的解决方案。您的网站将表现得更好,您的数据库性能将更好,并且您能够更改数据并将其复制。
关于azure - Azure 上对 SQL Server Compact 4.0 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182933/