在SQL Server 2008中覆盖数据
问题描述:
我有一张表只保留3个月的记录,然后覆盖这些数据。 我想保留所有的数据,所以我做了这个数据库和另一个数据库之间的合并复制,但数据仍然覆盖在这两个数据库(发布商和分销商)在SQL Server 2008中覆盖数据
什么是解决这个问题的最佳方法?
答
使用此:
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)
显然需要改变的过程,覆盖3个月的数据!如果你解释那是什么,那么我们可以猜测。如果你不能改变,那么你需要做一些更多的手动复制(即通过SSIS)。由于您正在尝试复制,因此是否可以选择保留一个表并覆盖整个历史记录?你的表有一个可以用来唯一标识行的键吗? –
此数据库连接到一个应用程序,该应用程序包含一个代码,用于删除数据库中的任何记录超过90天。该应用程序不再支持我们的公司,所以我们不能更改代码。我尝试合并复制,但行为像一个事务,不要为什么。该表包含每行的唯一ID –
合并复制将添加和删除,以便表保持相同。它不会为您保留历史记录。数据库是否位于同一个SQL Server或不同的SQL Server上?如果他们在同一个SQL Server上,并且您有一个可用于识别行的密钥,则可以运行一个或两个sql语句以获取所需内容。请澄清一点,我会发布一个答案 –