Azure网站上的SQL Server CE

时间:2014-10-06 02:30:04

标签: azure sql-server-ce

尝试在Azure网站上运行SQL Server CE,但我收到错误:

  

无法加载与版本8876的ADO.NET提供程序对应的SQL Server Compact的本机组件。安装正确版本的SQL Server Compact。有关更多详细信息,请参阅知识库文章974247

2 个答案:

答案 0 :(得分:0)

您无法在Azure Web Sites上使用SQL Server CE。使用Azure网站,您必须使用外部数据库 - 例如Azure SQL DatabaseMySQL

一般而言,对于云和任何云服务(IaaS,PaaS,SaaS),您永远不会依赖本地文件系统,而是将文件保存在持久存储上,例如Azure Blob存储。因此,您不能(不应)使用SQL Server CE等服务。

答案 1 :(得分:0)

这似乎有效:

  • 参考System.Data.SqlServerCe 4.0,设置“Copy Local”= true。
  • Azure作为x86进程运行(不是Amd): Environment.GetEnvironmentVariable( “PROCESSOR_ARCHITECTURE”);
  • 在dev机器上找到SQLServerCE依赖项: C:\ ProgramFiles \ Microsoft SQL Server Compact Edition \ v4.0 \ Private \ x86
  • 在Web项目中创建SqlServerCE \ x86文件夹。
  • 将x86文件复制到新的x86文件夹中: sqlceca40.dll sqlcecompact40.dll sqlceer40EN.dll sqlceme40.dll sqlceqp40.dll sqlcese40.dll
  • 将此块添加到global.asax

    中application_start的顶部
        string dest = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath;
        string src = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "SqlServerCE\\x86";
    
        foreach (var file in Directory.GetFiles(src))
        {
            var fileinfo = new FileInfo(file);
            string destpath = Path.Combine(dest, fileinfo.Name);
    
            if (!File.Exists(destpath))
            {
                fileinfo.CopyTo(destpath);
            }
        } 
    

注意:我对此解决方案不满意,但我无法弄清楚如何在部署时将文件放入bin文件夹。后期构建事件似乎不起作用。如果有人有更好的解决方案,请提出建议。