14

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

4

3 回答 3

19

当然可以在 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,您可以使用“私有部署”方法,如“ErikEJ”的博客中所述。

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

于 2013-06-01T15:33:26.040 回答
5

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

我为它写了一篇文章

这是我找到的英文版

分几步:

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

像这样一步一步来:

  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. 你会发现它可以很好地工作并且完全免费。

于 2014-10-03T04:59:31.143 回答
2

微软 Azure 的第二个 Wenchao Zeng不支持 Sql Compact。

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

最好的方法是您使用Azure SqlBLOB 存储

于 2013-03-03T06:11:37.737 回答