可能是你的字段总长度超过8000了吧
试试将较大的字段改成text型

解决方案 »

  1.   

    WY2000.DBO.TRIGGERS  这个可能也是问题。表名可是使用保留字吗?如果使用的话,应该是要加[]的吧??
      

  2.   

    DECLARE @EXECSQL VARCHAR(5000)
    declare @sourceservername varchar(20)
    declare @destinationservername varchar(20)
    declare @dbname varchar(20)
    set @sourceservername='FILESRV'
    set @destinationservername='FILESRV'
    set @dbname='WY2000_80'SET @EXECSQL='INSERT INTO  '+
    LTRIM(RTRIM(@DESTINATIONSERVERNAME))+
    '.WY2000.DBO.TRIGGERS  (DBNAME,TBNAME,NAME,CONTENT,ID) '+
    ' SELECT  '''+LTRIM(RTRIM(@DBNAME))+''',d.NAME, A.NAME,C.TEXT,A.ID '+
    ' FROM  '+LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS A, '+
    LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSCOMMENTS  C, '+
    LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS  D '+
    ' WHERE D.XTYPE=''U''  AND  A.PARENT_OBJ=D.ID '+
    ' AND A.XTYPE=''TR'' AND C.ID=A.ID '+
    ' AND RTRIM(A.NAME) NOT IN '+
    ' (SELECT RTRIM(TR.NAME)  FROM '+
    LTRIM(RTRIM(@DESTINATIONSERVERNAME))+
    '.WY2000.DBO.TRIGGERS TR WHERE  RTRIM(UPPER(TR.DBNAME))='''+
    RTRIM(LTRIM(upper(@DBNAME)))+''' )'
    EXEC(@execsql)
    ????
      

  3.   

    問題應是在content上面,TRIGGERS中的content是text型,而SYSCOMMENTS則是varbinary型,
    有的時間執行不出錯,有的時候則出錯。