彭建军的专栏

子曰:“学而不思则罔;思而不学则殆。”

彭建军ID:pengjj
106118次访问,排名824好友0人,关注者2
pengjj的文章
原创 171 篇
翻译 0 篇
转载 7 篇
评论 176 篇
彭建军的公告
★ 关 于 我 ★

·一个男人
·一个程序员
·Send Me Your Mail


转载请注明出处,谢谢。

死写代码的游乐场

添加本博客到您的RSS
Add My Blog To Your Google

My Blog In English

最近评论
wuliao8:哈哈,我就是Google一下Google到你啦
wuliao8:哈哈,忘记告诉你我是谁了,尚海中是也!
wuliao8:哈哈,彭哥,我Google coalesce的用法,竟然Google到你空间来了,你也太强了,佩服,佩服!!
hdnero:wow gold
hdnero:wow gold
文章分类
收藏
相册
05-07-23-玉溪芭蕉龙源-我和宝宝
2005-07-23-玉溪-芭蕉龙源-BeCool
宝宝的写真
大四-大理-观音阁
郭斌在云大
我的新娘
小宝用小贝拍的猪宝—2
玉溪_2006_春节
猪宝用小贝拍的小宝—1
正在建设的小项目
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 SQL Server 文档整理 - 2 清空所有数据库表记录的存储过程收藏

新一篇: SQL Server 文档整理 - 3 触发器调用存储过程 | 旧一篇: SQL Server 文档整理 - 1 列出目的表所有字段的存储过程

       两年多没有碰SQL Server 2000了,昨天整理电脑的时候发现了以前写的一些文档,今天就整理到博客上来吧。不然也对不起“彭建军的专栏”几个字了,呵呵。

       很多时候,你想将数据库恢复到最初的“纯净”状态,用数据库DDL脚本当然是最好的选择,但是,如果你没有这个脚本呢?本存储过程就是提供这样一个方法……

/**
* 关于: MS SQL Server 2000 存储过程 - 2
* 作者:彭建军
* 存储过程名称:  TruncateAllTables
* 存储过程功能: 清空数据库中除 ESCAPE 表中的记录除外的所有表中的数据!
* 测试环境:SQL Server 2000 SP4 + Windows XP Sp2
* 更新时间:2006-7-8 16:36
**/

USE Pjj
GO

IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'P' AND NAME = 'TruncateAllTables')
 DROP PROCEDURE TruncateAllTables
GO

--该存储过程功能:
CREATE PROCEDURE TruncateAllTables
WITH ENCRYPTION
AS
BEGIN TRANSACTION

 IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = 'EscapeTable')
  DROP TABLE EscapeTable

 CREATE TABLE EscapeTable
 (
  Name VARCHAR(100)
 )

 --这里非常重要,请将不想被清空数据的表名插入 EscapeTable 表中
 INSERT INTO EscapeTable
  SELECT '不想被清空数据的表名'UNION ALL
  SELECT 'T2'

 DECLARE @SQLString NVARCHAR(500)
 DECLARE @TableName VARCHAR(100)

 DECLARE MyCursor CURSOR
  FOR SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME NOT IN(SELECT NAME FROM EscapeTable)
  ORDER BY ID

 OPEN MyCurSor
  FETCH NEXT FROM MyCurSor INTO @TableName
 WHILE (@@FETCH_STATUS = 0)
 BEGIN
  SET @SQLString = 'TRUNCATE TABLE ' + @TableName
  EXECUTE sp_executesql @SQLString
  
  FETCH NEXT FROM MyCurSor INTO @TableName
 END
CLOSE MyCursor
DEALLOCATE MyCursor

DROP TABLE EscapeTable

PRINT 'Procedure is successful done.'

SELECT 1

COMMIT TRANSACTION
GO

--重要!执行该存储过程将清空不包含在 ESCAPE 表中的记录内的所有表中的数据!执行前请确认!
INSERT INTO T1
 SELECT 'abc' UNION ALL
 SELECT 'opq'

INSERT INTO T2
 SELECT 'abc' UNION ALL
 SELECT 'opq'

EXECUTE TruncateAllTables
GO

SELECT * FROM T1
SELECT * FROM T2
GO 

发表于 @ 2006年07月08日 17:13:00|评论(loading...)|编辑

新一篇: SQL Server 文档整理 - 3 触发器调用存储过程 | 旧一篇: SQL Server 文档整理 - 1 列出目的表所有字段的存储过程

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 彭建军