SQL Server 2005/2008国际实时可用性

时间:2009-05-01 15:44:06

标签: sql-server database replication data-synchronization

我公司最近在新加坡开设了办事处。我使用SQL Server 2005后端处理我们内部用于管理公司的Web应用程序。由于新加坡网络访问速度较慢,我们将向他们发送一台服务器,该服务器将托管Web应用程序和数据库的本地副本,并且我们希望将其本地版本的数据库与我们的数据库保持同步。美国应用程序和新加坡应用程序都可以读/写数据。

合并复制是否是解决此问题的正确方法?这是我一直在研究的路径,它似乎最适合我们想要的东西。 SQL Server 2008中有更好的东西吗?您为国际协作实施了哪种类型的数据库可用性解决方案?

1 个答案:

答案 0 :(得分:1)

如果两个位置的某些人都必须更新任何数据,那么合并复制就是可行的方法。但...

如果出现以下情况,我建议使用点对点复制:

  • Office1(美国?)只需更新/删除Office1应用插入的记录。

  • Office2(新加坡)只需要更新/删除Office2应用程序插入的记录。

两个办事处都可以查询所有数据。

引用: 在对等复制中需要理解的最基本概念是每个服务器都包含所有数据,但每个服务器只负责更新自己的数据子集。因此,每个服务器都携带相同的模式,并且每个服务器都是其他服务器上发生的所有更改的订阅者,同时作为其自身已更改数据的发布者。当一台服务器上的数据发生变化时,这些变化将发送给对等网络中的所有用户。每个服务器包含并更新特定于其地理位置的数据,还可以查看来自其他位置的所有数据。对等复制的一个关键部分是每个服务器负责更改自己的数据集,没有其他位置可以更改该数据集中的任何数据。如果违反此规则,则可以在两个位置更改数据,并且由于站点之间没有数据锁定,因此在复制数据时,最终可能会出现不一致的结果。

您可以在此处找到更多信息: http://www.sqlmag.com/Article/ArticleID/49241/sql_server_49241.html

http://technet.microsoft.com/en-us/magazine/2006.07.insidemsft.aspx

http://www.sql-server-performance.com/articles/dba/peer-to-peer_replication_p1.aspx

如何实施。

必须从您必须复制的两个位置更新的表格,例如:

TableOrders1 (OrderID int IDENTITY(1,2) NOT NULL, Col1 int, Col1 nvarchar(), etc.) 
TableOrders2 (OrderID int IDENTITY(2,2) NOT NULL, Col1 int, Col1 nvarchar(), etc.) 

然后使用对等复制将数据从TableOrders1发送到Office2,将数据从TableOrders2发送到Office1,等等......

要查询数据,您可以创建视图。