w_rose和newdongkui(老乌鸦) 的方法,但我认为不大准确(在一个表有多个触发器的情况下)@trigtype=(SELECT CASE WHEN dbo.sysobjects.deltrig > 0 THEN 'DELETE'  
                              WHEN dbo.sysobjects.instrig > 0 THEN 'INSERT'  
                              WHEN dbo.sysobjects.updtrig > 0 THEN 'UPDATE' END  
                  FROM dbo.sysobjects INNER JOIN  
                   dbo.sysobjects sysobjects_1 ON dbo.sysobjects.parent_obj = sysobjects_1.id  
                  WHERE (dbo.sysobjects.type = 'TR') AND (dbo.sysobjects.name = @ObjectName))  
          END  

解决方案 »

  1.   

    我有300分未结贴,给300分.另200分在此领:
    http://expert.csdn.net/Expert/topic/2372/2372581.xml?temp=8.420962E-02
      

  2.   

    select  substring(text,charindex('for ',text)+4,charindex(' as',text)-charindex('for ',text)-3) ,* from  syscomments  c,sysobjects  o  where  o.id=c.id  and  o.xtype='TR'
      

  3.   

    唉,找了半天,跟大力的一样,加密了的没办法。Select text from syscomments c
    join sysobjects o on c.id = o.id
    Join sysobjects s on o.parent_obj = s.id
    where 1=1
    and o.xtype = 'TR'
    and s.name = '表名'
      

  4.   

    select 
    case when [text] like '%[ '+char(10)+']for[ '+char(13)+']%' 
      then
    substring(text,
    patindex('%[ '+char(10)+']for[ '+char(13)+']%',text)+5,
     patindex('%[ '+char(10)+']as[ '+char(13)+']%',text)-patindex('%[ '+char(10)+']for[ '+char(13)+']%',text)-5)
      else substring(text,
    charindex('INSTEAD OF',text),
    patindex('%[ '+char(10)+']as[ '+char(13)+']%',text)-charindex('INSTEAD OF',text))
     end 类型
    from syscomments c,sysobjects o where o.id=c.id and o.xtype='TR'
      

  5.   

    有答案,怎么回没有呢??J9988,大力:
       以下方法未经证实,欢迎大家多测试,验证真伪SELECT NAME,CASE WHEN
    STATUS & 0X2000<>0 THEN 'Y' ELSE NULL END AS [INSTEAD OF],
    CASE WHEN
    STATUS & 0X400<>0 THEN 'Y' ELSE NULL END AS [INSERTE],
    CASE WHEN
    STATUS & 0X100<>0 THEN 'Y' ELSE NULL END AS [DELETE],
    CASE WHEN
    STATUS & 0X200<>0 THEN 'Y' ELSE NULL END AS [UPDATE]
     FROM SYSOBJECTS
    WHERE TYPE='TR'
      

  6.   

    SELECT NAME,CASE WHEN
    STATUS & 0X2000<>0 THEN 'Y' ELSE NULL END AS [INSTEAD OF],
    CASE WHEN
    STATUS & 0X400<>0 THEN 'Y' ELSE NULL END AS [INSERT],
    CASE WHEN
    STATUS & 0X100<>0 THEN 'Y' ELSE NULL END AS [DELETE],
    CASE WHEN
    STATUS & 0X200<>0 THEN 'Y' ELSE NULL END AS [UPDATE]
     FROM SYSOBJECTS
    WHERE TYPE='TR'
      

  7.   

    不好意思j 老师 刚刚看到消息触发器加密了好像就没办法了触发器的状态(enabled or disabled)
    将sysobjects 表中 status字段的值转换为二进制的,第12位为1则表示禁止,为0表示允许
      

  8.   

    微软的STATUS意义未公开,所以不知道是否有例外,可不知道是否不同版本的SQL SERVER会有所不同
      

  9.   

    6.5及以前的版本不行,因为没有STATUS字段,而且没找到代替的字段
      

  10.   

    果真高手!谢谢CCEO!
    等晚上我有环境时,测试后结贴.
      

  11.   

    要知道触发器是否enable,必须根据不同类型进行判断!
    SELECT NAME,CASE WHEN STATUS & 0X2000<>0 THEN 'Y' ELSE NULL END AS [INSTEAD OF],
    CASE WHEN STATUS & 0X100<>0 THEN 'Y' ELSE NULL END AS [DELETE],
    CASE WHEN STATUS & 0X200<>0 THEN 'Y' ELSE NULL END AS [UPDATE],
    CASE WHEN STATUS & 0X400<>0 THEN 'Y' ELSE NULL END AS [INSERT],
    CASE WHEN STATUS & 0X900<>0X900 AND STATUS & 0XA00<>0XA00 AND STATUS & 0XC00<>0XC00 THEN 'Y' ELSE 'N' END AS [ENABLED]
     FROM SYSOBJECTS
    WHERE TYPE='TR'