我无法更改触发器,因为它花了超过80分钟,并且也无法删除/删除,而在尝试从Designer模式执行此操作时,它显示错误为
- > Drop Failed for trigger. "LOCK request timeout period exceeded."
但是同样的触发器在包含相同表的其他数据库中是ALTER / DROP。
Table and Database Designers
事务超时
如某些表格所示,在30000秒之后。 Prevent saving changes that require table re-creation
里面
TOOLS->选项 - >设计师。
运行Activity监视器后
我的触发器没有改变/丢弃由于这个原因吗?还是其他一些原因?
答案 0 :(得分:6)
很可能在桌面上有另一个打开事务的进程。 要查找哪些流程有未结交易:
DBCC OPENTRAN (
的数据库)
Activity Monitor
。如果您在尝试更改触发器时运行它,则可以查看blocked by
列。然后你需要将具有开放事务或最坏情况的spid结束到kill spid
答案 1 :(得分:0)
CREATE PROC er_kilitlenmecoz as
declare @max_count int, @count int, @sqlstring varchar(100)
declare @spid_table table (spid int NOT NULL)
INSERT @spid_table
select spid
from master.dbo.sysprocesses
where spid in (select blocked from master.dbo.sysprocesses where blocked <> 0) and blocked = 0
select @max_count = MAX(spid) FROM @spid_table
select top 1 @count = spid from @spid_table
while @count <= @max_count
begin
select @sqlstring = 'kill ' + CONVERT(varchar(4), @count)
exec(@sqlstring)
print @sqlstring
IF @count = @max_count
begin
break
end
ELSE
BEGIN
select top 1 @count = spid FROM @spid_table where spid > @count
end
end
---运行SCRİPT - DİSABLETRİGGER