首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL server复制和EDM

SQL server复制和EDM
EN

Stack Overflow用户
提问于 2011-10-20 06:23:33
回答 2查看 718关注 0票数 0

为了高可用性,我们公司正在增加一台新的new服务器和sql服务器。我们将进行P2P复制,以使两个SQL server保持一致。但是,我们在应用程序中使用的是EDM,它基于现有的服务器。如果我们添加另一个SQL server,我是否需要为第二个数据库创建另一组EDM。维护2个edmx文件将是一场噩梦。将来,出于可扩展性的目的,我们可能会添加另一台SQL服务器。一定有更好的方法,而不是让每个SQl服务器有一个单独的EDMX文件。此外,对于已经存在的使用EDM访问数据库的代码,我应该如何修改它,使其选择正确的数据库,从而成为EDM。目前,我的代码如下:

使用(var context = new MyCOmpanyModel.MyCompanyEntities()) { ....}

我不想在访问EDM的每个页面上都更改此设置。必须有一种更好的方法来选择SQL服务器(或实体),并在基本Page类或类似的类中设置它们。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2011-10-20 17:12:38

这听起来像是你要在相同的数据库服务器版本之间复制数据,用相同的模式托管数据库=不需要更改EDM,唯一需要更改的应该是第二个web服务器的连接字符串。

我想知道你为什么选择这个解决方案?为了实现高可用性,公司通常采用数据库的故障转移集群(主动/被动)和web服务器的负载平衡。Web服务器负载平衡对客户端是透明的,故障转移群集对web服务器是透明的。故障转移群集使用共享NAS或SAN存储(具有自己的高可用性功能,如RAID阵列和热插拔)。在主动/被动集群的情况下,您应该只需要主动服务器的SQL服务器许可证(如果最近没有更改)。

票数 1
EN

Stack Overflow用户

发布于 2011-10-21 03:25:34

谢谢你的回复。所以这就是你的建议:

代码语言:javascript
复制
<add name="MainDB" 
 connectionString="metadata=res://*/MainDB..." 
 providerName="System.Data.EntityClient"   />
<add name="OtherDB" 
 connectionString="metadata=res://*/MainDB..." 
 providerName="System.Data.EntityClient" />

string connectionStringKey;


if(Server == 1)  
  connectionStringKey = "MainDB";
else
   connectionStringKey = "OtherDB";

        using (var context = new MainDB("name=" + connectionStringKey))
        {
        }

我不想把上面的检查服务器代码放在几乎每个页面上。如果我们稍后再向网络中添加一台sql服务器,那将是一件非常令人头疼的事情。有没有更好的方法在应用程序中设置服务器连接字符串或ObjectContext对象,然后忘记它。

关于您的建议,为数据库服务器做集群,集群是昂贵的。它需要额外的硬件和软件。p2P复制似乎并不那么昂贵。不过,还是要感谢你的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7828948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档