如何删除数据库中的所有的数据,保留一个库的结构,其中很多表多是做了关联的!

[复制链接]
查看11 | 回复9 | 2014-7-14 11:41:47 | 显示全部楼层 |阅读模式
同标题
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
记得以前有人问同样的问题,你搜索一下看看(好象有个简便方法的)
我一般是做个存储过程一个一个表进行TRUNATE TABLE
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
我知道可以用游标来解决这个问题,一个一个的TRUNCATE,但是表之间是有约束的,必须得到表的约束关系才能做删除的动作,不然会报错的!表之间的依赖关系如何才能得到呢?这个好像是我这个问题的关键
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
那只好先搞清楚表之间的关系,其实不难搞清楚的
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
感谢你的帮助,如果我对数据库的结构一点多不了解怎么办?我希望能通过系统表来得到相关的信息,关键我现在不知道哪几个系统表和这个问题有关系(Sysobjects,sysdepends),具体的是怎么关联的好像看帮助也没有给出什么有用的信息!不知道大家有什么高见?
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
其实你可以先删除业务数据(先删除体,再删除头),再删除汇总数据,最后删除代码
一般可以这样做的,删除不了就换个先手次序就可以了,试验一下不难的
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
我用查询分析器肯定能搞定这个问题!关键是我向写个过程或者函数什么的,让我的前台的应用程序来调用!不过刚刚去吃了个饭,好像有点思路了!这边的人挺热心的
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
1建一个目标空库,做DTS,选择只复制结构。
2生成数据库的脚本,如图,然后可以建一个同名空库恢复。
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
还有你可以看看这里:
http://www.itpub.net/showthread.php?s=&threadid=185338
回复

使用道具 举报

千问 | 2014-7-14 11:41:47 | 显示全部楼层
create proc up_010
as
begin
declare @sql varchar(99),@tbl varchar(30),@fk varchar(30)
declare cur_fk cursor local for
select object_name(constid),object_name(fkeyid) from sysreferences
--删除所有外键
open cur_fk
fetch cur_fk into @fk,@tbl
while @@fetch_status =0
begin
select @sql='alter table '+@tbl+' nocheck constraint '+@fk
exec(@SQL)
select @sql='delete from '+@tbl
exec(@SQL)
fetch cur_fk into @fk,@tbl
end
close cur_fk
declare cur_fks cursor local for
select name from sysobjects where xtype='U'
open cur_fks
fetch cur_fks into @tbl
while @@fetch_status =0
begin
select @sql='delete from ['+@tbl+']'
exec(@SQL)
fetch cur_fks into @tbl
end
close cur_fks
end
exec up_010
這個過程是nocheck所有外建﹐然后再刪除所有業務數據﹐
然后再check所有外鍵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行