2017-08-29 49 views
0

我有一個鏈接服務器試驗Db下我的LocalDB服務器(SQL 2014)。時同步表結構是不同的(SQL)

鏈接服務器有一個表:

Valid State(StateId(char Pk), Name, Desc, CreatedBy, UpdatedBy) 

在我的試驗Db我有一個表:

Valid State(Id(int PK),Abbreviation(char) ,Name, IsActive) 

我需要這些鏈接的服務器和我的表之間同步數據。處理可以實現SQL-Merge的情況的方法是什麼? 我從http://www.sqlservercentral.com/articles/T-SQL/66066/得到了一些想法

我到了查詢工作的地步,如果表結構是同一個。但結構不同的情況不同。任何建議將不勝感激:) 謝謝!

+0

你能提供一個結構不一樣的場景的例子嗎? – Eli

+0

我正在使用它來進行2臺不同服務器之間的數據同步,(必須使用鏈接服務器 - 某些原因)。不知道我是否更容易 –

+0

試試這個:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/顯示錶結構兩臺服務器上的示例數據以及您嘗試過的內容 - 通過這種方式,我們可以幫助您解決遇到的錯誤/問題 – Eli

回答

0

假設系統之間的ID的實際匹配,這會做你想要什麼:

-- Insert any new records 
INSERT INTO [Valid State](Id,Name, IsActive) 
SELECT StateId, Name 
FROM LinkedServer.database.schema.[Valid State] SRC 
WHERE NOT EXISTS (
    SELECT * FROM [Valid State] TGT WHERE TGT.ID = SRC.StateID 
    ) 


-- Update any existing records 
UPDATE TGT 
SET Name = SRC.Name 
FROM [Valid State] TGT 
INNER JOIN 
LinkedServer.database.schema.[Valid State] SRC 
ON SRC.StateID = TGT.ID 

即使在這一切促使你的避風港」解釋你想用剩的領域做什麼。所以我把它們排除在外