好用的清理数据库脚本

1、脚本说明

  此脚本用于清空数据库数据,只删除相关表记录,保留表结构及存储过程触发器等主要架构。

  设计思路:

  1)根据表添加时间逆向获取所有用户表信息

  2)使用游标循环删除每张表内数据

  3)使用delete进行删除,即使有外键关系同样可以删除表记录

  4)表存在自增主键则将其重置为0

  5)截断日志,将数据库表空间及日志文件缩减到最小

  2、使用说明

  1)建立删除数据库存储过程SP_DaTaBaSeClear

以下是代码片段:
If( object_id('SP_DaTaBaSeClear') is not null ) drop procedure SP_DaTaBaSeClear go SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE SP_DaTaBaSeClearASBegin Transaction declare @BtableName varchar(200) declare curDel cursor for select rtrim(name) from sysobjects where type = 'U' order by crdate desc open curDel declare @delSQL varchar(500) fetch next from curDel into @BtableName while( @@fetch_status = 0) begin set @delSQL = 'delete from ' + @BtableName print @delSQL exec( @delSQL ) if( ident_seed(@BtableName) is not null ) begin dbcc checkident( @BtableName, reseed, 0 ) print '种子成功置为1' end fetch next from curDel into @BtableName end close curDel deallocate curDel Commit GO
  2)执行该存储过程,执行过程中查看执行信息,如有红色信息则先手动删除红色信息表记录

  -- 执行存储过程删除表数据

  EXEC SP_DaTaBaSeClear

  3)如仍然报出红色信息则直接执行以下语句进行删除

以下是代码片段:
declare @BtableName varchar(128) declare curDel cursor for select rtrim(name) from sysobjects where type = 'U' order by crdate desc open curDel declare @delSQL varchar(255) fetch next from curDel into @BtableName while( @@fetch_status = 0) begin set @delSQL = 'delete from ' + @BtableName print @delSQL exec( @delSQL ) if( ident_seed(@BtableName) is not null ) begin dbcc checkident( @BtableName, reseed, 0 ) print '种子成功置为1' end fetch next from curDel into @BtableName end close curDel deallocate curDel
  4)最后执行脚本重置数据库大小

以下是代码片段:

backup log @DataBaseName with no_log dbccshrinkdatabase(@DataBaseName)

  dbccupdateusage(@DataBaseName)

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-02 09:10:36

好用的清理数据库脚本的相关文章

思维导图学 Linux Shell攻略之干货篇 mysql数据库脚本管理系统

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1610653 以结果为导向的学习,才是最有效率学习.笔者以前也曾经隔三差五的学习linux shell编程来着.给我的感觉就是,今天学了,后天忘了,一星期之后就白学了. 还好,最近自己平时没啥事,一直照着<linux shell攻略>,学做一些小例子,看着自己写的shell程序,简单的几行程序,实现一些好玩的效果,信心

提前认识软件开发(31) 数据库脚本中的begin与end

在数据库脚本中,begin与end是一对奇怪的单词.缺少它们,某些代码看起来会让人一头雾水:添加它们,代码的结构瞬间就清晰了. 确实,begin与end作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读. begin与end主要用在以下地方: 1. if.else.else if.while等语句中 if.else.else if.while等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志begin-end. 脚本文件中的begin和end应独占一行并且位

提前认识软件开发(30) 数据库脚本中的空行与空格

在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个: (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 ( [表内容实现代码] ) go -- 空行 create table tb_example2 ( [表内容实现代码] ) go (2) 用于分割两个存储过程的创建脚

提前认识软件开发(29) 数据库脚本文件的布局

"没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义: (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性. (2) 有利于提高产品的开发质量和效率,并降低开发成本. (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率. 可见,统一的.良好的脚本代码布局和风格不仅仅是个人主观美学或形式上的问题,而且影响到产品的质量,并涉及到自身脚本编程能力的提高. 1. 脚本布局顺序概述 在实际的软件开发

提前认识软件开发(26) 数据库脚本的注释

1. 概述 注释在程序语言的编写中占有非常重要的地位.优美的.得当的注释不仅有助于研发人员理解程序,还能够提高编程效率(进而提高办事效率). 但是,可能是由于工作比较忙的缘故,许多开发人员不重视注释的书写,这也导致了项目交接的时候,其他开发人员理解程序困难,甚至不知道程序到底要做什么事情.因此,良好注释的书写是对一个开发人员的基本要求,大家一定要重视. 对于脚本的注释,建议大家一律采用英文,这样可以体现出国际化.专业性与规范性. 2. 数据库脚本文件头部的注释 很多脚本文件都没有头部的注释,大家

Python访问纯真IP数据库脚本分享

  这篇文章主要介绍了Python访问纯真IP数据库脚本分享,本文直接给出实现代码,需要的朋友可以参考下 项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的.从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的.下面给出实现源码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!/

编程-linux备份人大金仓数据库脚本

问题描述 linux备份人大金仓数据库脚本 有谁熟悉人大金仓数据库么,我想做一个shell编程来备份数据库到本地,有人会,求指导啊. 解决方案 参考如何在linux下使用linux任务计划实现KingbaseES作业调度 通过sys_dump备份,类似 su - kingbase -c ''''cd /usr/KingbaseES/bin; ./sys_dump -h 172.31.10.16 -p 54321 -U SYSTEM -W MANAGER -f /kingbackup/1.dmp

database-卸载程序时如何清理数据库

问题描述 卸载程序时如何清理数据库 我使用数据库来存储信息如果我卸载了程序,然后再重新安装一次数据库仍然是相同的但是我想清理数据库如何解决这个问题? 解决方案 监听 uninstall 事件,你必须实现一个 broadcast received <applicationandroid:icon=""@drawable/ic_launcher""android:label=""@string/app_name"" >

在vs2013中利用C#获取sql2008数据库脚本

问题描述 如题所述,我需要在vs里面,点击某个按钮,即可获取某个数据库(数据库名已知)的脚本文件..还请各位大神帮忙了 解决方案 解决方案二:坐等大神们的到来解决方案三:自己先顶着解决方案四:大神们快快来围观啊....难道都放假嗨皮去了啊...解决方案五:什么叫做数据库的脚本?没有捷径,你自己先整理出来你要什么脚本,然后一项一项的写代码,解决方案六:引用4楼rrxxjj1234的回复: 什么叫做数据库的脚本?没有捷径,你自己先整理出来你要什么脚本,然后一项一项的写代码, 数据库脚本就是在数据库里