【问题标题】:Support for SQL Server Compact 4.0 on Azure支持 Azure 上的 SQL Server Compact 4.0
【发布时间】:2013-03-03 05:58:50
【问题描述】:

我的网站是一个使用 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?如果是这样,我需要做些什么来消除上述错误并使其正常工作?

【问题讨论】:

  • 您能否澄清一下您使用的是 azure 网站还是 Web 角色?有什么理由不使用 SQL Azure?

标签: azure


【解决方案1】:

当然可以在 Windows Azure 上使用 SQL Server Compact。但是,您需要问自己:

我会更改数据库中的任何内容吗?
这包括添加、更新和删除数据。如果这样做,您应该在 Windows Azure 上使用 SQL Server Compact。因为,如果您在 Windows Azure 上使用 SQL Server Compact 并更改数据库中的任何内容,您将遇到两个问题:

  1. 数据未复制。
  2. 您可能会丢失数据。

数据不会被复制
如果您更改数据库中的任何内容,则更改将保留在本地。这意味着如果您有多个实例运行您的 Web 应用程序,那么每个 Web 应用程序都将拥有自己的数据库,并且如果您在其中一个实例中进行更改,则更改不会复制到其他实例,这将导致不可预知的行为在您的应用程序中。

您有丢失数据的风险
如果在部署后更改数据库中的任何内容,则可能会丢失数据,因为 Windows Azure 可能会决定将您的实例重新部署到另一台虚拟机或物理机上。发生这种情况时,将使用您最初上传到 Windows Azure 的部署包设置新实例,并且此包不包含您对数据库所做的任何更改。出于多种原因,这种重新部署可能随时发生。

结论
那么,Azure 上的 SQL Compact?当然,如果您的数据是只读,那也没问题。但是,请注意,您不会获得使用 SQL Azure 的性能。但是,如果您的需求在未来发生变化,您始终可以将您的应用程序从 SQL Server Compact 迁移到 SQL Azure。

如果您想在 Windows Azure 中使用 SQL Server Compact,您可以使用“private deployment”方法,如“ErikEJ”的博客中所述。

编辑:微软宣布他们现在为每个 Azure 订阅提供1 free 20 MB SQL Azure Database。这意味着您可以使用免费的 SQL Azure 数据库创建订阅并创建免费网站。 (只要小于 20 MB)您还可以免费将多个网站与同一个 SQL Azure 数据库关联。因此,如果您正在考虑在 Windows Azure 上使用 SQL Server Compact,因为您的数据库非常小并且您不想为 100 MB 的数据库付费,您可以考虑此选项。在大多数情况下,这将是一个更好的解决方案。您的网站性能会更好,您的数据库性能会更好,并且您可以更改数据并将其复制。

【讨论】:

  • 抱歉,您的回答比我的好。确实可以在 Azure 中使用 SQL CE...只是不推荐
  • @MayogaX 你不需要道歉。 :-) 您还为 OP 指出会有复制问题,应该三思而后行。我只是详细说明了它。 :-)
  • 我不明白关于数据复制windowsazure.com/en-us/documentation/articles/… 提到“实例共享内容和配置”以及关于丢失数据的风险social.technet.microsoft.com/wiki/contents/articles/… 提到“上传到 Windows Azure 网站中站点文件夹的文件将存储在持久存储中,并且可以从流程回收和站点重新映像中恢复。”
  • 有趣,我没有意识到这一点。那时似乎没有丢失数据的风险。但是,如果您有多个远程连接到同一个 SQL CE 数据库,Microsoft 建议您应该考虑另一种数据库解决方案。所以我不建议在多实例网站场景中使用 SQL CE。但是如果你只有一个 Web Site 实例,那么我想 SQL CE 数据库的读写访问应该没有问题。
  • " .. Web 和商业数据库将于 2015 年 9 月 12 日停用并自动升级到基本、标准和高级 .." 因此,如果您想在预算内以免费层级启动一个简单的网站,那么 SQL CE 可能是一个选项。更多信息请访问stanbashtavenko.com/azure-starter-with-sql-compact
【解决方案2】:

Azure 上的 SQL Server Compact 4.0 是可能的!!

我为它写了一个article

this是我找到的英文版

一步一步:

以下是我研究后的解决方案:

这样一步一步来:

  1. 安装两个 nuget:EntityFrame.SqlServerCompact & Microsoft SQL Server Compact Edition

  2. 将您的 SQL 数据库文件 (.sdf/.mdf) 放入 APP_Data 文件夹中 (为了使用它,像这样放置连接字符串:

    <add name ="DefaultConnection" connectionString ="Data Source=|DataDirectory|CompactDB.sdf" providerName ="System.Data.SqlServerCe.4.0" />)
    
  3. 将包含上述 SQL 数据库文件的完整项目发布到 AzureWebsites。

  4. 你会发现它运行良好并且完全免费。

【讨论】:

  • 您是否也获得了 Azure 中通常的 4GB 大小限制?
【解决方案3】:

Second Wenchao Zeng of MicrosoftAzure 不支持 Sql Compact。

我可以使用一次,但不建议这样做,因为 Windows Azure 使用数据复制(这是云,记得吗?)并且 Sql CE 不支持此功能。如果可以在 Azure 中放置 Sql CE,有时将无法访问,或者用户会看到数据过时或损坏,因为异步。

最好的方法是使用Azure SqlBLOB storage

【讨论】:

  • 谢谢。如果我在我的 mvc 站点的 app_data 文件夹中使用 xml 文件作为存储,我会遇到同样的问题吗?
  • @user2128244 如果你想使用 XMl,你可以使用 azure BLOB 存储。事实上,我从未尝试过使用 xml
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2015-11-24
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多