我安装了Umbraco 4.7.2,配置为将SQL Server CE用于GoDaddy 4GH共享主机帐户。最初,该网站按预期运行。但是,我很快意识到不允许后续/并发连接,并且收到以下内容:
System.Data.SqlServerCe.SqlCeException:存在文件共享 违反。不同的进程可能正在使用该文件。 [ .. \ App_Data \ Umbraco.sdf]
我做了一些研究,我知道SQL Server CE不允许多个连接,但我发现很难相信Umbraco会提供SQL Server CE作为选项,如果它不能允许多个访问者浏览网站。
我已尝试修改每个其他资源的连接字符串,但没有任何运气。这是我当前的连接字符串:
datalayer=SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco;data source=|DataDirectory|\Umbraco.sdf;file mode=read write;persist security info=false;
我尝试过不同的文件模式,例如Read Only
和Shared Read
,但没有运气。你是如何克服这个问题的?这在某种程度上是托管环境的问题还是连接字符串的问题?
答案 0 :(得分:1)
您的托管环境可能不支持使用SQL CE数据库。
根据此页http://support.godaddy.com/help/article/4883/4gh-frequently-asked-questions,它无法支持:
并发文件在多个会话或并发线程中写入同一文件。受影响资源的示例:基于文件的数据库和跨会话日志文件(由于额外的数量,这些问题在4GH环境中被夸大了。)
它看起来实际上是一个分布式环境,它在多个服务器之间共享文件系统,这会导致锁定问题。
所以我想解决方案是转移到传统的托管产品,只有一台服务器。
Umbraco确实支持在使用SQL服务器(非CE)时在分布式环境中运行,但这要求您事先了解所有服务器,因为它需要调用其他实例来刷新缓存等。 ,我认为你不能用你当前的托管产品来获得它。
您可以尝试在当前设置中将数据库升级到完整的SQL服务器,但我不确定它是否会运行得很好。