SQL Server:如何同步不同数据库中的两个表?

问题描述:

我有两个数据库,A和B.数据库A有3个表T1,T2和T3。这三个表也包含在数据库B中。每当数据库A中的这三个表中有更新/删除/新记录时,我都需要将其与数据库B中的这三个表同步。我该怎么做?SQL Server:如何同步不同数据库中的两个表?

此外,T1,T2,T3在数据库B中不会更改,它们仅用于读取。所以,如果数据库A中有更改,我只需要更新它们。

我正在使用SQL Server 2008和SQL Server Management Studio。

尝试此链接 它可以在MySQL Workbench中的模型与实时数据库 http://dev.mysql.com/doc/workbench/en/wb-database-synchronization.html

+0

问题是针对ms SQL – radar 2014-09-30 10:20:30

您可以使用CONTEXT_INFOTriggers更新数据库B的表,如果数据在DatabaseA

被更改同步
DECLARE @ID int,@CONTEXT_INFO varbinary(128) 

SET @ID = 10 
SET @CONTEXT_INFO =cast('ID='+CONVERT(varchar(10),@ID) 
+REPLICATE(' ',128) as varbinary(128)) 
SET CONTEXT_INFO @CONTEXT_INFO 

--do Update/Delete of DatabaseA that will fire the trigger 

SET CONTEXT_INFO 0x0 

这里是触发的检索值的部分:

Create Trigger UpdDel 
on TableA --TableA of DatabaseA 
Instead of Update,Delete 
as 
Begin 
Begin Try 

DECLARE @ID  int 
     ,@sCONTEXT_INFO varchar(128) 
SELECT @sCONTEXT_INFO=CAST(CONTEXT_INFO() AS VARCHAR) 
FROM master.dbo.SYSPROCESSES WHERE [email protected]@SPID 

IF Substring(RTRIM(@sCONTEXT_INFO),1,LEN(RTRIM(@sCONTEXT_INFO))) like '%ID%' 
BEGIN 
    SET @ID=Substring(RTRIM(@sCONTEXT_INFO),LEN(RTRIM(@sCONTEXT_INFO)),1) 
END 
ELSE 
BEGIN 
    RAISERROR('ID was not specified',16,1) 
    ROLLBACK TRAN 
    RETURN 
END 
Insert into DatabaseB.dbo.TableA(col1,col2,col3,col4,col5) 
Select col1,col2,col3,col4,col5 from DatabaseA.dbo.TableA where [email protected] 

/* Do Your Action for DatabaseA table here */ 

End Try 
Begin Catch 
Declare @ErrMsg Nvarchar(max),@Errseverity int 
Set @ErrMsg=ERROR_MESSAGE() 
Set @Errseverity=ERROR_SEVERITY() 

Raiserror(@ErrMsg,@Errseverity,1) 

End Catch 
End 

以上触发器仅适用于一个表创建其他表的触发器也如上所示

+0

我将测试此...谢谢。 – Tracer 2014-09-30 10:40:32

+0

没问题很高兴帮助如果适合,它解决了您的问题接受它作为答案 – Rajesh 2014-09-30 10:53:24