删除SQL Server中所有数据的方法

2014-11-24 13:26:25 · 作者: · 浏览: 0
删除SQL Server中所有数据的方法
数据库中被插入了很多脏数据,想要一个一个找出来删除,简直如大海捞针。在数据库的有用数据有备份的情况下,可以采取先删除所有表的数据,使其成为光有框架的数据库,然后恢复备份数据。
那怎样才能删除全部数据呢? 逐个表删必须遇到外键约束一和触发器等各种麻烦。显然,可以在删除表前,解除外键约束和触发器。且看下面sql语句。
[sql]
EXEC sp_MSForEachTable 'ALTER TABLE   NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE   DISABLE TRIGGER ALL'
EXEC sp_MSForEachTable 'DELETE FROM  '
EXEC sp_MSForEachTable 'ALTER TABLE   CHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE   ENABLE TRIGGER ALL'
sp_MSForEachTable 是微软 系统数据库未曾公开的一个存储过程,另有一个为sp_MSforeachdb。
上面的第一,二条语句分别用来解除约束和禁用触发器,第三条为删除所有数据表中的数据,第四,五条则是恢复约束和触发器。 www.2cto.com
把以上语句写成系统存储过程。
USE MASTER
CREATE PROCEDURE sp_DeleteAllData   
AS   
EXEC sp_MSForEachTable 'ALTER TABLE   NOCHECK CONSTRAINT ALL'   
EXEC sp_MSForEachTable 'ALTER TABLE   DISABLE TRIGGER ALL'   
EXEC sp_MSForEachTable 'DELETE FROM  '   
EXEC sp_MSForEachTable 'ALTER TABLE   CHECK CONSTRAINT ALL'   
EXEC sp_MSForEachTable 'ALTER TABLE   ENABLE TRIGGER ALL'   
GO

作者 zzuqqiu