gpt4 book ai didi

database - SQL Server - 在 2 个不同的数据库上同步 2 个表

转载 作者:太空狗 更新时间:2023-10-30 01:41:35 25 4
gpt4 key购买 nike

我在装有 SQL Server 2008 R2 的同一台服务器上的 2 个不同数据库中有 2 个具有相同架构的表。一张表更频繁地更新数据。

现在需要保持这两个表同步。这可以作为夜间过程发生。实现同步的最佳方法是什么。过程 ?

最佳答案

使用 MERGE 是您最好的选择。您可以控制每个条件。当匹配时,当不匹配时等等。

MERGE - Technet

MERGE- MSDN (GOOD!)

示例 A:事务性使用 - 表变量 - 否

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

关于database - SQL Server - 在 2 个不同的数据库上同步 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com