Sql server 检查无效触发器

Sql server 检查无效触发器,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,是否有一种自动化/脚本化的方法来检查数据库中是否存在任何无效触发器?无效含义列类型不匹配等。您可以提取和修改触发器的脚本,并在执行ALTER语句时捕获异常 SELECT ID, Name , REPLACE(SQL, 'CREATE TRIGGER', 'ALTER TRIGGER') + CHAR(13) + CHAR(10) + 'GO' as SQL FROM ( SELECT ID,name , SQ

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

您可以提取和修改触发器的脚本,并在执行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

你能举一个列类型不匹配的例子吗?这就是我想要的,谢谢。我添加了一些小改动,一个“go”语句和代码来删除 ;字符,以使输出有效。