2010-04-27 55 views
1

我有两个SQL Server 2008企业数据库(在两台机器上),其中一个数据库是master数据库,另一个数据库是slave数据库。如何编写T-SQL来比较和复制数据?

我想将源数据库中的表的更新传输到目标数据库中的表(两个表具有相同的架构,它们都使用单个列作为唯一主键)。传输规则(总之,规则是保持目标数据库相同,因为源数据库的更新源数据库),

  1. 如果在源数据库中的新行,但不是在目标数据库,将该行插入到目标数据库中;
  2. 如果源数据库中不存在但存在于目标数据库中的行,请删除目标数据库中的行;
  3. 如果在源数据库中某行的内容(即主键列以外的列)发生更改,请将新内容更新到目标数据库。

由于事先 乔治

+1

就我个人而言,我会节省您的时间和精力,并购买RedGate SQL Compare - http://www.red-gate.com/products/SQL_Compare/如果您将时间放在任何价值上,它都是非常值得的! – 2010-04-27 11:02:00

+0

我需要一些免费的脚本。 :-) – George2 2010-04-27 11:04:46

+1

几天前你不问这个问题吗? :http://stackoverflow.com/questions/2718608/sql-server-database-synchronization-issues/2718823#2718823 – 2010-04-27 11:07:07

回答

1

您可以使用从Visual Studio(VSTS)向导SQL服务器项目[看看这个tutorial了解更多]中,你可以选择你的主数据库,然后在向导中选择您的其他配置。

最后它会从您的主数据库中获取您的数据/架构,然后您可以将其与任何其他具有数据或架构比较的其他SQL Server数据库进行比较。

它还会生成更新脚本,并可以直接将所有更改应用于从属数据库。

您需要visual studio团队系统数据库版本支持。

+0

我觉得它是一个手动过程。任何自动同步数据的方法? – George2 2010-04-27 11:41:18

+0

我在新建的SQL Server项目中发现,我只能创建SQL Server 2000和SQL Server 2005项目,为什么我无法创建SQL Server 2008项目? – George2 2010-04-27 11:43:13

+1

@ George2 - 您需要安装此更新才能在VS 2008中获得sql server 2008项目类型[在VS2010中它已经可用]。 http://www.microsoft.com/downloads/details.aspx?FamilyID=BB3AD767-5F69-4DB9-B1C9-8F55759846ED&displaylang=en#filelist – Krunal 2010-04-27 11:48:08