【问题标题】:INSERT trigger from another table from a linked Server is slow来自链接服务器的另一个表的 INSERT 触发器很慢
【发布时间】:2025-11-22 08:00:02
【问题描述】:

我有三张桌子:

(table_a) 有一个 AFTER INSERT 触发器,可将来自链接服务器的另一个表 (table_b) 中的行插入到本地表 (table_c) 中。

只要将批号插入(table_a),触发器就会从(table_b) 插入包含与批号相同列值的行的(table_c)

这似乎很慢,有时会冻结我服务器上的操作。我发现从本地服务器的表中插入似乎运行良好,所以我怀疑问题是因为它是从链接服务器插入的。

如何提高插入速度?

【问题讨论】:

  • @DaleK 你的意思是触发器应该排队一个存储过程,然后让存储过程执行实际的插入操作?
  • @DaleK 感谢您的回复,我会根据您的建议尝试解决问题。

标签: sql-server triggers insert linked-server


【解决方案1】:

应始终尽可能快地编写触发器以避免此问题。理想情况下,不应在触发器内执行任何类型的密集操作。当操作涉及联系其他服务器时,这一点会加倍适用,因为这很容易最终需要实时。

而是使用服务或代理将操作排队并在触发器之外处理您的队列。

队列可能看起来像表中的记录,一旦处理就会被标记。记录需要包含足够的信息以供服务执行相关操作,这些信息可以包含在存储过程中。

【讨论】: