在SQL Server 2008中覆盖数据

问题描述:

我有一张表只保留3个月的记录,然后覆盖这些数据。 我想保留所有的数据,所以我做了这个数据库和另一个数据库之间的合并复制,但数据仍然覆盖在这两个数据库(发布商和分销商)在SQL Server 2008中覆盖数据

什么是解决这个问题的最佳方法?

+0

显然需要改变的过程,覆盖3个月的数据!如果你解释那是什么,那么我们可以猜测。如果你不能改变,那么你需要做一些更多的手动复制(即通过SSIS)。由于您正在尝试复制,因此是否可以选择保留一个表并覆盖整个历史记录?你的表有一个可以用来唯一标识行的键吗? –

+0

此数据库连接到一个应用程序,该应用程序包含一个代码,用于删除数据库中的任何记录超过90天。该应用程序不再支持我们的公司,所以我们不能更改代码。我尝试合并复制,但行为像一个事务,不要为什么。该表包含每行的唯一ID –

+0

合并复制将添加和删除,以便表保持相同。它不会为您保留历史记录。数据库是否位于同一个SQL Server或不同的SQL Server上?如果他们在同一个SQL Server上,并且您有一个可用于识别行的密钥,则可以运行一个或两个sql语句以获取所需内容。请澄清一点,我会发布一个答案 –

使用此:

INSERT INTO DB2..T1 (column1,column2,column3) 
SELECT column1,column2,column3 
FROM DB1..T1 As Src 
WHERE NOT EXISTS (
    SELECT * 
    FROM DB2..T1 As Tgt 
    WHERE Tgt.ID = Src.ID 
    ) 
+0

谢谢尼克对你的大力支持 –

我尝试下面的查询和它的作品!

插入到DB2..T1 SELECT * FROM DB1 ..T1 其中DB1 ..T1.ID不在(选择DB2..T1 ID)