我的应用程序是基于sql server db的。
除自定义外,所有客户都具有相同的数据库。
一些自定义包括:新表、修改后的表、自定义视图、自定义触发器.
当我运行软件更新时,会执行一些脚本。现在,我手动禁用触发器,并在脚本完成后重新启用。
无论如何,我想自动禁用所有触发器(这些触发器已经启用,可能有些已经禁用),然后在结束时重新启用它们。
不是为了重新创造号角,是怎么做的?
如何只获取当前db?上的活动触发器
一旦我得到了它,我就可以以编程方式创建和运行
DISABLE TRIGGER triggername ON TABLENAME
ENABLE TRIGGER triggername ON TABLENAME发布于 2012-03-09 12:59:39
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发布于 2012-03-09 12:57:47
SELECT *
FROM sys.triggers
WHERE is_disabled = 0发布于 2012-03-09 13:02:12
SELECT
TAB.name as Table_Name
, TRIG.name as Trigger_Name
FROM [sys].[triggers] as TRIG
inner join sys.tables as TAB
on TRIG.parent_id = TAB.object_idhttps://stackoverflow.com/questions/9634281
复制相似问题