SQL Server - 在2个不同的数据库上同步2个表 [英] SQL Server - synchronizing 2 tables on 2 different databases
本文介绍了SQL Server - 在2个不同的数据库上同步2个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个表在同一服务器上的SQL Server 2008 R2的2个不同的数据库上具有相同的模式。
一个表更频繁地更新数据。
I have 2 tables with same schema on 2 different databases on the same server with SQL Server 2008 R2. One table gets updated with data more often.
现在需要保持这两个表同步。这可能是一个夜间过程。
什么是实现同步的最佳方法。过程?
Now there is a need to keep these 2 table in sync. This can happen as a nightly process. What is the best methodology to achieve the sync. process ?
推荐答案
使用MERGE是你最好的选择。您可以控制每个条件。 WHEN MATCHED THEN,WHEN MATMEDCHEN THEN etc.
Using MERGE is your best bet. You can control each of the conditions. WHEN MATCHED THEN, WHEN UNMATCHED THEN etc.
示例A: - 表格变量 - NO
DECLARE @Source TABLE (ID INT)
DECLARE @Target TABLE (ID INT)
INSERT INTO @Source (ID) VALUES (1),(2),(3),(4),(5)
BEGIN TRANSACTION
MERGE @Target AS T
USING @Source AS S
ON (S.ID = T.ID)
WHEN NOT MATCHED THEN
INSERT (ID) VALUES (S.ID);
ROLLBACK TRANSACTION
SELECT 'FAIL' AS Test,*
FROM @Target
示例B:交易使用 - 物理表
CREATE TABLE SRC (ID INT);
CREATE TABLE TRG (ID INT);
INSERT INTO SRC (ID) VALUES (1),(2),(3),(4),(5)
BEGIN TRANSACTION
MERGE TRG AS T
USING SRC AS S
ON (S.ID = T.ID)
WHEN NOT MATCHED THEN
INSERT (ID) VALUES (S.ID);
ROLLBACK TRANSACTION
SELECT 'FAIL' AS Test,*
FROM TRG
示例C:交易使用 - Tempdb(本地和全球)
CREATE TABLE #SRC (ID INT);
CREATE TABLE #TRG (ID INT);
INSERT INTO #SRC (ID) VALUES (1),(2),(3),(4),(5)
BEGIN TRANSACTION
MERGE #TRG AS T
USING #SRC AS S
ON (S.ID = T.ID)
WHEN NOT MATCHED THEN
INSERT (ID) VALUES (S.ID);
ROLLBACK TRANSACTION
SELECT 'FAIL' AS Test,*
FROM #TRG
这篇关于SQL Server - 在2个不同的数据库上同步2个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文