在类似数据库之间移动数据

时间:2013-12-09 14:31:06

标签: c# sql .net sql-server database-migration

我有2个SQL Server数据库,结构几乎相同。我必须定期将数据和数据从一个移动到另一个。发现的解决方案主要是重建数据库,我只想移动稍微修改过的数据。受影响的表需要是可配置的,并且两个数据库位于不同的计算机上。

所以:每隔一分钟左右获取一次数据,将其插入另一个非常轻的预定义更改并删除原始记录。

在这种情况下,.NET和/或SQL的最佳解决方案是什么?感谢。

3 个答案:

答案 0 :(得分:4)

我会使用SQL Server Replication。使用内置复制将阻止任何人重新发明轮子。

答案 1 :(得分:1)

您可能需要镜像数据库。这里有一个你感兴趣的链接:http://technet.microsoft.com/en-us/library/ms189047(v=sql.105).aspx

另一个解决方案更为基础,数据库中的每个表都应该有一个Timestamp字段,然后,通过.net应用程序,您可以根据时间戳选择行并插入到另一个数据库。

答案 2 :(得分:1)

可以创建 SSIS包,以便在可重启的庄园中执行以下操作。

1 - 在服务器A上标记要复制的数据。

2 - 将数据从服务器A复制到服务器B.

3 - 删除服务器A中的标记数据。

这个解决方案的好处是数据源几乎可以符合任何ODBC标准。

我过去编写过一个Data Scoop TSQL程序,它将数据从一个数据库移动到同一服务器上的另一个数据库。它计划每5分钟运行一次。

它使用OUTPUT子句使事务成为一个单元。我也使用TOP(N)子句在while循环中完成它,这样日志文件就不会增长。

-- Delete a row and data to audit table
DELETE FROM [Person].[CountryByContinent]
  OUTPUT 'DELETE RECORD', DELETED.Country, DELETED.Continent
  INTO [Stage].[Audit] ([Action], [Country], [Continent])
WHERE [Country] = 'Chillis Grill & Bar'; 
GO  

如果它在另一台服务器上,您始终可以使用链接服务器。但是,有时在LAN / WAN传输过程中,它们会很慢。

祝你好运。