2010-04-27 87 views
0

我想用我的SQL Server Express数据库获得某种程度的容错/冗余。我知道如果升级到更高版本的SQL Server,我可以获得内置的“复制”。但是我想知道是否有人在客户端上管理复制的经验。如,从我的应用程序:SQL Server的客户端复制?

  • 每次我需要创建,更新或从数据库中删除记录 - 直接从客户端
  • 每次我需要发出声明,所有ñ服务器阅读,我可以从一个代表性的服务器上这样做(其他方案似乎也可能在这里)。
  • 似乎这个逻辑可能会直接添加到我的Linq-To-SQL数据上下文中。

有什么想法?

回答

0

我从一个内部客户端管理复制。我的数据库模型针对所有事务处理仅插入模式,并针对查找数据进行插入更新。删除是不允许的。

我有一个中心表,一切都与之有关。我在此表中添加了一个字段,用于默认为NULL的日期时间戳。我将这张表和所有相关表中的数据存入一个临时区域,完成了BCP,清理了接收端的临时表,为临时表执行了BCP IN,执行了数据验证,然后插入了数据。

对于一些基本的容错,您可以安排定期备份。

2

每次我需要创建,更新或 从数据库中删除记录 - 问题的语句从客户端

后患无穷所有n台服务器 直接。

你打算分布式事务还是让一些服务器失败?如果你有一个分布式事务,如果一个服务器离线一段时间,你会怎么做。

只有在应用程序服务器接受请求并知道数据库场的服务器端数据门户层执行此类事情时,它才能工作。那时,你最好使用更高级的SQL Server。

+0

但是,如果其中一个数据库脱机或死亡,因此没有对我的INSERT,UPDATE或DELETE做出响应 - 这不就是我要找的'煤矿里的金丝雀'吗?然后,我可以发出数据库服务器已经死机的警报,并且 - 在此期间 - 只与其余健康的服务器通信。对? – 2010-04-29 16:21:43

+0

由于财务限制,做服务器端复制目前不是一个选项。所以真正的问题是:客户端复制是否比Express数据库频繁备份更好。 – 2010-04-29 16:23:33

+0

@Mighty Z您是否将开发时间添加到了一个可靠的“客户端”解决方案与不同的SQL Server版本中?是的,您可以每半小时进行一次完整的备份,比如说一个数据库限制在Express的大小限制内。 – 2010-04-30 00:18:38