使用SQL Server Express版本而不是Compact版本作为本地数据库缓存?

时间:2009-12-02 16:55:19

标签: sql-server sql-server-express local microsoft-sync-framework

默认情况下,使用Visual Studio 2008提供的向导创建本地数据库缓存时,它将为您创建SQL Server Compact版数据库,并使用Sync Framework为缓存和远程SQL Server之间提供同步功能( 1.0)。这允许我们在基于客户端服务器的应用程序中提供脱机功能。

我的问题是,是否可以使用SQL Server Express版本而不是使用SQL Server Compact版本,以便我们可以使用存储过程?所有客户都是在Core 2 Duo上运行的强劲笔记本电脑,因此处理能力根本不是问题。但是,对于我们的用户来说,离线是最有价值的功能。

另外,使用LINQ将所有存储过程代码转换为C#中间层代码需要我们进行一些重大改写。最后也是最重要的是,我们的老板希望业务逻辑在存储过程中。 SQL Server CE不会削减它。

5 个答案:

答案 0 :(得分:0)

是的,你可以做到。您可以让安装程序将SQL Server Express安装到其计算机上。

我唯一警告的是,SQL Server可以占用一些额外的内存(200 - 500兆),而且对于用户来说,为什么他们的计算机一直在消耗这么多内存并不总是显而易见的。如果它们都有足够的RAM,这不是问题,但任何拥有少于2场演出的计算机的人都会注意到这一点。

您也可以将存储过程编写到SQL Server Express中。我已经将SQL Server Express用于某些产品,它非常适合我需要构建的大多数数据库,因为它们从未达到过限制。

答案 1 :(得分:0)

  

是否可以使用SQL Server   EXPRESS版本让我们可以使用   存储过程?

您可以使用Click Once来简化安装和部署。

如果需要,您可以通过发出适当的配置命令来限制SQ​​L Express使用的内存量。

由于您的客户使用笔记本电脑,您可以考虑提供一个从应用程序中停止和启动SQL Express的选项,而不是将其作为服务自动启动。

P.S。如果您正在使用SP,则可能不需要LINQ。 ADO.NET可以产生更高性能的代码,特别是如果您可以利用LINQ无法实现的命令批处理,异步查询,多个结果集等功能。

答案 2 :(得分:0)

article表示Sync Framework 1.0不支持SQL Server Express作为客户端。 Sync Framework 2.0可以支持Express作为客户端。

  

在Sync Framework 1.0中 -

     

我们有2个数据库同步提供程序,即   SqlCeClientSyncProvider和DbServerSyncProvider。这些提供商   支持离线(或hub-and-spoke)场景 - 所以,我们只支持客户端DBMS   可以使用SQL Server Compact Edition和我们在服务器端   能够使用SQL Server或任何其他ADO .net兼容的DBMS。

     

在Sync Framework 2.0中 -

     

除了旧的提供商,我们还有3个新的数据库   同步提供程序,即SqlSyncProvider,SqlCeSyncProvider,   和DbSyncProvider。这些新提供程序可与Collaboration一起使用   以及离线方案,从而使任何ADO .net兼容   数据库作为客户端或服务器在脱机方案中或作为   合作方案中的同伴。

答案 3 :(得分:0)

评论蒂姆上面的回答。我实际上或多或少与上面的初始问题相同。我目前正在努力通过这些版本的Sync Framework,同步服务,SQL Server版本等等,以及可以使用哪个版本的版本。

我发现蒂姆提到的文章中有一个矛盾(上图):

根据本文第13个问题的答案,似乎SQL Compact是唯一可以与SF 1.0一起使用的。对于那些在ASP.NET上开发并坚持使用SF 1.0的人来说太糟糕了,因为在尝试将SQL Compact与ASP.NET结合时会遇到异常(自己动手)。除非有人拥有SQL CE v4吗?

“SQL Server Compact不适用于ASP.NET开发。”

例如:

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/b8763568-c7b0-4e4a-bdf3-14969a0f67a0/

根据同一篇文章的问题#3的答案,默认情况下安装了SF 1.0与SQL Server 2008和SQL Server Express 2008.我可以证明,我没有要求当我在客户端Express上安装我的东西时它就在那里。

这是增加混乱的诸多因素之一:我们如何能够轻松地弄清楚在每个场景/设置中使用什么或者我们可以使用什么?

如果它可以帮助回答原始问题,经过一周的深入研究并在与最简单的可能情况下的同步相关的C#中挣扎,这是我的发现:因为SF 1.0与SQL Express 2008一起安装,可以得出结论它们可以一起使用。错误。我尝试了一切。我在互联网上发现很少有关于两者的信息,因此它们不能一起使用。不要浪费你的时间。是的,您可以使用SQL Express,但只能使用Sync Framework 2.0。这是我个人的结论。现在我知道了,我即将在客户端上安装Sync Framework 2.0(尽管复杂的RFC和批准过程阻止我在服务器端安装任何东西)。我相信集中模型(客户端连接到中央服务器但不连接在一起,服务器本身没有安装Web应用程序/ IIS),Sync Framework的使用专门用于客户端。有意义吗?

无论如何,感谢蒂姆分享这个。我已经阅读了常见问题解答,但通过查看你的帖子,我重新阅读了它并意识到我真的应该安装2.0; - )

Kindest Regards,

Zyxy

答案 4 :(得分:-1)

LocalDataCache生成的自动代码仅在我所知的情况下仅支持SQLCE。在技​​术上可以将SQL2008 Express同步到SQLServer,但它似乎需要大量代码,并且与VS2008中优雅的SQLCE支持一样简单。