如何同步2个数据库

时间:2011-06-06 06:02:30

标签: c# sql sql-server-2008 synchronization

我想同步2个数据库特定记录。 假设我有两个数据库;

1.Shop 
2.Stock

现在让我们假设用户更改库存中特定产品的价格。我想在店内更改此产品价格!

我的工作是 - 假设互联网连接稳定,

  • 当库存价格发生变化时,我会调用Web服务,此服务将在Web数据表价格中插入条目。
  • 现在在商店方面,如果我找到任何新条目,我每隔20分钟使用网络服务ping该网页数据表我会在商店更新相关产品价格!

我想到的另一个选择是复制。但我们使用的是SQL Server的快递版,据我所知,快递版不能作为出版商使用!

我的第一个选择是否有效用于此目的,或者我错过了什么,并且有更好的替代方案来实现此目的!

3 个答案:

答案 0 :(得分:1)

你可以像上面的pRime那样在表上触发,但不是直接写入其他数据库而是将更改写入本地“staging”表,然后每隔20分钟左右安排一个任务将更新发送到第二个db。

您可以将第二个数据库设置为链接服务器。

这样,如果两个dbs之间的连接断开,就可以避免使触发器处于Read Read状态。

答案 1 :(得分:0)

你可以在Stock表上创建一个触发器。

CREATE TRIGGER triggerName
ON [Stock].[dbo].[products]
AFTER UPDATE 
AS 
IF ( UPDATE (productPrice))
BEGIN
    --insert to shop
END
GO

答案 2 :(得分:0)

如果无法使用MS SQL Server复制功能(需要一些非Express版本)(请参阅http://msdn.microsoft.com/en-us/library/ms151198.aspx),那么另一个选择是使用 MS Sync Framework (可以使用DB到SQL CE等,文件甚至自定义数据源等) - 请参阅http://msdn.microsoft.com/en-us/library/bb726002.aspx

如果你真的想自己在代码中实现它(我强烈建议不要这样做),那么将它实现为“推送方案”:

  • 填充登台表的数据库触发器
  • Windows服务,它检查登台表中的更改并应用它们
  • 冲突解决规则
  • 完成所有这些的记录,以便能够分析差异(以防万一)