SQL Server 2000 备份触发器
一个表是否存在触发器,可以查看sysobjects中xtype='TR'来判断,并且相关内容可以在syscomments表中得到。
然后现在的问题是,当一个触发器超过4000字节后,在syscomments中会有多笔记录,现在的问题来了,如何进行还原呢?
select *
from syscomments
where id in (select id from sysobjects
where xtype='TR' and parent_obj=object_id(@tablename)
)
------解决方案--------------------联机丛书上的原话:在使用 syscomments 时,请考虑使用 nvarchar(max)。
由于当年2000设计的时候,还没有那么长的字符串,所以2000的字符类型都相对较短。如果觉得获取不了,那么尝试写脚本来生成创建语句。
另外,DDL不是频繁更新的东西,没必要经常备份吧?直接用SQLServer自带的生成脚本就可以保留起来了。如果是开发层面的保留,那可以使用源代码管理工具如visual sourcesafe这类工具来记录变更情况。
------解决方案--------------------sql2000
把结果先生成临时表
再用游标循环处理
用UPDATETEXT循环赋值给多个变量
exec(@s1+@s2)--最后生成这样的执行语句
go
可安装个版本数据库sql2005/2008/...,可附加上数据,然后把存储过程生成脚本就行了