检查无效触发器

时间:2013-11-19 22:41:14

标签: sql-server sql-server-2008 tsql

是否有自动/脚本方式来检查数据库中是否存在任何无效触发器?无效含义列类型不匹配等。

1 个答案:

答案 0 :(得分:2)

您可以提取和修改触发器的脚本,并在执行ALTER语句时捕获异常。

SELECT ID, Name
     , REPLACE(SQL, 'CREATE TRIGGER', 'ALTER TRIGGER') 
       + CHAR(13) + CHAR(10) + 'GO'  as SQL 
FROM
(                             
SELECT ID,name , SQL = STUFF( (SELECT ' ' + CAST(Text as varchar(max))
                                FROM sys.Syscomments c 
                                WHERE c.id =s.ID 
                                ORDER BY  colid
                                FOR XML PATH(''), type
                                ).value('.', 'nvarchar(max)')
                            , 1, 1, '')
FROM sys.sysobjects AS s
WHERE xtype = 'P'
) x