sql-server - 如何获取数据库上的事件触发器列表?

标签 sql-server triggers sql-server-2008-r2

我的应用程序基于 sql server db。

除定制外,所有客户都具有相同的数据库。

一些自定义包括:新表、修改表、自定义 View 、自定义触发器...

当我运行软件更新时,会执行一些脚本。现在我手动禁用触发器并在脚本完成后重新启用。

无论如何,我想自动禁用所有触发器(已启用,可能其中一些可能已经被禁用),然后在最后重新启用它们。

不重新发明轮子,如何做到这一点?

如何仅获取当前数据库上的事件触发器?

一旦我得到这个,我就可以以编程方式创建和运行

DISABLE TRIGGER triggername ON TABLENAME

ENABLE TRIGGER triggername ON TABLENAME

最佳答案

select objectproperty(object_id('TriggerName'), 'ExecIsTriggerDisabled') 

1 表示真,0 明显表示假

使用 Jeff O 的查询并稍微修改一下
SELECT  
       TAB.name as Table_Name 
     , TRIG.name as Trigger_Name
     , TRIG.is_disabled  --or objectproperty(object_id('TriggerName'), 'ExecIsTriggerDisabled')
FROM [sys].[triggers] as TRIG 
inner join sys.tables as TAB 
on TRIG.parent_id = TAB.object_id 

或将其添加为 where 子句。
where TRIG.is_disabled = 0 -- or 1 depends on what you want

关于sql-server - 如何获取数据库上的事件触发器列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634281/

相关文章:

tsql - 在 SSDT 部署后脚本中使用 "GO"

sql-server - 滚动时保持报告标题可见

SQL Select 语句返回同一表中下一个日期时间的分钟差异

sql-server - 多答案问题的最佳数据库模型是什么

sql - 在同一个表中查询 MS SQL Server 中的数据库列表

sql-server - 在触发器内执行动态sql "alter database"

google-apps-script - 如何修改触发器,以便在编辑时发送电子邮件,但速度不那么快?

MySQL断言

sql-server - SQL Server Reporting Services 2008 R2 Express Edition "Report Builder"按钮

MYSQL-无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用