使用插入的ID的SQL Server触发器

时间:2013-05-21 14:57:08

标签: sql sql-server triggers identity-insert

我想针对数据库中表的插入创建触发器。例如,如果我有一个company_name表,我想执行以下操作:

  1. 将新行插入服务器A上的company_name
  2. 调用一个触发器,该触发器在服务器A上的company_name中获取新插入的行ID。
  3. 服务器B中Set identity_insert ON
  4. company_name
  5. 将刚刚插入服务器A的同一行插入服务器B上的company_name表。
  6. 链接服务器可以称为[ServerB].[ServerB-Database].dbo.company_name

    由于不同国家/地区的客户数据托管限制,这是一项要求。

1 个答案:

答案 0 :(得分:4)

一个问题是国家A和B之间的滞后和联系。

发生远程插入时,本地事务仍在运行。这会降低性能并增加阻塞。

远程服务器也可能不可用。或者花太长时间来回应。您可以将触发器编码为不失败,但随后数据不一致。

最后,如果远程服务器上有插入,则会出现多主机问题。

我真的会考虑像复制这样的解决方案将数据发布到另一台服务器。 或者考虑使用服务代理来解耦本地和远程插入。