gpt4 book ai didi

sql - CREATE TRIGGER 在 SQL Server 2005 上花费的时间超过 30 分钟

转载 作者:行者123 更新时间:2023-12-04 14:07:06 25 4
gpt4 key购买 nike

在我们的实时/生产数据库上,我试图将触发器添加到表中,但没有成功。试过几次,create trigger 语句用了30多分钟才完成,我取消了。

该表经常被几个不同的进程读取/写入。我已禁用更新表的计划作业,并在表上的事件较少时尝试,但我无法停止访问表的所有内容。

我认为创建触发器语句本身没有问题。创建触发器语句在测试环境中成功且快速,并且在将行插入/更新到表时触发器正常工作。虽然当我在测试数据库上创建触发器时,表上没有负载并且行数少得多,这与实时/生产数据库不同(100 对 13,000,000+)。

这是我要运行的创建触发器语句

CREATE TRIGGER [OnItem_Updated] 
ON [Item]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;

IF update(State)
BEGIN
/* do some stuff including for each row updated call a stored
procedure that increments a value in table based on the
UserId of the updated row */
END
END

在更新行或有很多行时在表上创建触发器会不会有问题?

在 SQLServer 中,触发器在创建时默认启用。是否可以创建默认禁用的触发器?

还有其他想法吗?

最佳答案

问题可能不在表本身,而是在必须更新以创建触发器的系统表中。如果您在正常流程中执行任何其他类型的 DDL,他们可能会阻止它。

使用 sp_who 找出 block 的来源,然后从那里进行调查。

关于sql - CREATE TRIGGER 在 SQL Server 2005 上花费的时间超过 30 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230642/

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