2016-11-06 45 views
1

我有一張表只保留3個月的記錄,然後覆蓋這些數據。 我想保留所有的數據,所以我做了這個數據庫和另一個數據庫之間的合併複製,但數據仍然覆蓋在這兩個數據庫(發佈商和分銷商)在SQL Server 2008中覆蓋數據

什麼是解決這個問題的最佳方法?

+0

顯然需要改變的過程,覆蓋3個月的數據!如果你解釋那是什麼,那麼我們可以猜測。如果你不能改變,那麼你需要做一些更多的手動複製(即通過SSIS)。由於您正在嘗試複製,因此是否可以選擇保留一個表並覆蓋整個歷史記錄?你的表有一個可以用來唯一標識行的鍵嗎? –

+0

此數據庫連接到一個應用程序,該應用程序包含一個代碼,用於刪除數據庫中的任何記錄超過90天。該應用程序不再支持我們的公司,所以我們不能更改代碼。我嘗試合併複製,但行爲像一個事務,不要爲什麼。該表包含每行的唯一ID –

+0

合併複製將添加和刪除,以便表保持相同。它不會爲您保留歷史記錄。數據庫是否位於同一個SQL Server或不同的SQL Server上?如果他們在同一個SQL Server上,並且您有一個可用於識別行的密鑰,則可以運行一個或兩個sql語句以獲取所需內容。請澄清一點,我會發佈一個答案 –

回答

0

使用此:

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

謝謝尼克對你的大力支持 –

0

我嘗試下面的查詢和它的作品!

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