sql清空所有数据库表记录的存储过程.sql

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

USE DBname
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 'T_Sta_TableIdentity'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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值