【发布时间】:2018-06-12 20:48:44
【问题描述】:
我在一个 SQL Server 实例中有两个数据库,它们具有相同的结构。 现在我想为数据库中的一些表编写一些触发器,以便在插入、更新或删除记录时相互同步。
类似下面的内容将成为触发器之一:
CREATE TRIGGER AdminMessage_Insert
ON AdminMessage
AFTER INSERT
AS
INSERT INTO SecondDb.dbo.AdminMessage
( ID ,
DeptKey ,
AdminKey ,
ReceiverKey ,
MessageText ,
IsActive
)
SELECT i.ID, i.DeptKey, i.AdminKey, i.ReceiverKey, i.MessageText, i.IsActive
FROM INSERTED i
所以我的问题是有很多表,为每个表写三个触发器似乎不是最好的解决方案。
你能给我一个更好更小的方法吗?
更新
我发现了一些方法,例如 CDC、更改跟踪、SQL 审计,当然还有 复制(快照复制) 并阅读它们。 据我了解,对我来说最好的解决方案是使用“CDC”或“Audit”。 在他们两个中,我必须一张一张地处理每张桌子,这需要我很长时间。
我可以用更少的工作和一个 SQL 实例来更改所有表吗? (复制很好,但需要多个实例)
你的想法是什么?
【问题讨论】:
-
如果您考虑将一个触发器链接到多个表,您不能。
-
@ahmedabdelqader 我只是在寻找另一种方法,而不是使用触发器。
-
这个
doesn't seem to be the best solution是什么意思 -
您是否需要双向同步,或者一个数据库是主数据库,另一个是从数据库?
-
那么你可能应该使用replication 而不是重新发明轮子。
标签: sql-server database tsql database-trigger