清除数据库数据获得完整表结构
时间:2010-11-16 来源:BillGan
执行步骤:
1. 执行以下命令
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'
--这里为了简单,首先将所有表的约束都临时禁用
EXEC sp_MSForEachTable
@command1 = 'DELETE FROM ?' ,
@whereand =' AND o.name not in ('you dont want to tables deleted ')'
--删除所有指定的业务表数据,这里注意,只能使用DELETE FROM ?不能用TRCNCATE TABLE ?
--因为TRUNCATE 对有外键关联的表,不能清除数据,虽然该条命令会执行成功,
--但数据依然存在,使用DELETE 可以删除,但速度比TRUNCATE 慢很多,因为DELETE 要记录日志
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'
--恢复所有之前临时取消的约束
2.清理数据库日志,因为删除数据给数据日志带来了很多日志记录
DUMP TRANSACTION FTEMP_CPIC_JT WITH NO_LOG
3.压缩数据库数据文件,如果不压缩,数据文件不会自己缩小
DBCC SHRINKDATABASE('FTEMP_CPIC_JT ')
注:本方法只对MS SQLSERVER 测试