2017-08-29 33 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 

即使在这一切促使你的避风港”解释你想用剩的领域做什么。所以我把它们排除在外