如何清空数据库的所有数据?

时间:2020-12-27 13:53:20
在原有数据库的基础上,我想造一个新的结构一样的数据库,要求清空内面的数据! 请问有什么快速有效的方法. 注意表的约束关联很多!

11 个解决方案

#1


可以从企业管理器中生成所有对象的sql脚本,利用脚本重新建立数据库.

#2


YES 用脚本重建最快!

#3


谢谢,能说一下步骤吗??

#4


只有利用企业管理器,选中所有表,点击右键--所有任务--生成SQL脚本(G)...--点击选项标签
--表选项的所有复选框都打上勾--点击确定
生成的脚本文件放到查询分析器执行就OK

#5


把重要的选项说出来,我吧用SQL生成后的数据库与原来数据库结构不同! 我觉得这个方法不是很可靠

#6


执行SQL没有错误的话就应该与原来数据库结构相同的

#7


SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER   Proc ClearDataBase
AS

SELECT Identity(int ,1,1) as  id , name Into #Temp FROM sysobjects  WHERE (xtype = 'u')

Declare @ExecSQL  nvarchar(3000)
Declare @TableName  varchar(300)
Declare @i  int ,@count int

Select @count=Max(id) From #Temp
Set @i=1

While @i<=@count
Begin
   Select @TableName=name  From  #Temp Where id=@i
           Set @ExecSQL = 'Truncate Table ' + @TableName
   Exec(@ExecSQL)
           SET @i=@i+1
        end

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
我建立一个存储过程来删除数据库中的数据。

#8


1、分离数据库

2、拷贝数据/日志文件并重命名

3、将重命名的文件附加到数据库实例

4、用以下语句清除新数据库中的数据:

-- 删除数据库中的所有数据(通过禁用约束) 
-- 不好的地方在于如果本身有已经禁用的约束,执行这个后会开启它 

-- 邹建 2005.09(引用请保留此信息) 
-- ===================================================== 
-- 禁用所有约束 
EXEC sp_msforeachtable 
@command1=N'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 

-- 删除有数据R的表 
EXEC sp_msforeachtable 
@command1=N'DELETE ?', 
@whereand=N'AND EXISTS( 
SELECT rows FROM dbo.sysindexes 
WHERE id=O.id 
AND rows>0 
AND indid<2)' 

-- 启用所有约束 
EXEC sp_msforeachtable 
@command1=N'ALTER TABLE ? CHECK CONSTRAINT ALL' 
GO

#9


--先禁用所有外键约束
exec sp_msforeachtable "alter table ? nocheck CONSTRAINT all"

--禁止所有触发器
exec sp_msforeachtable "alter table ? disable trigger all"

--然后删除数据
/*exec sp_msforeachtable @command1='truncate table ?'
                       ,@whereand='and name not like ''sys%'' 
                                   and name not in(''dtproperties'',''特殊表2'',''特殊表3'')'*/
  exec sp_msforeachtable @command1='truncate table ?',
 @whereand=' and objectproperty(o.id,''TableHasForeignRef'')=0'
  exec sp_msforeachtable @command1='delete from ?',
 @whereand=' and objectproperty(o.id,''tablehasforeignref'')=1'
--再启用所有外键约束
exec sp_msforeachtable "alter table ? check constraint all"

--启用所有触发器
exec sp_msforeachtable "alter table ? enable trigger all"

#10


办法都不错哦,看楼主选哪个了,都能实现的,嘎嘎

#11


引用lengxiaowei(小伟)的,最好还是加上禁止所有触发器功能

#1


可以从企业管理器中生成所有对象的sql脚本,利用脚本重新建立数据库.

#2


YES 用脚本重建最快!

#3


谢谢,能说一下步骤吗??

#4


只有利用企业管理器,选中所有表,点击右键--所有任务--生成SQL脚本(G)...--点击选项标签
--表选项的所有复选框都打上勾--点击确定
生成的脚本文件放到查询分析器执行就OK

#5


把重要的选项说出来,我吧用SQL生成后的数据库与原来数据库结构不同! 我觉得这个方法不是很可靠

#6


执行SQL没有错误的话就应该与原来数据库结构相同的

#7


SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER   Proc ClearDataBase
AS

SELECT Identity(int ,1,1) as  id , name Into #Temp FROM sysobjects  WHERE (xtype = 'u')

Declare @ExecSQL  nvarchar(3000)
Declare @TableName  varchar(300)
Declare @i  int ,@count int

Select @count=Max(id) From #Temp
Set @i=1

While @i<=@count
Begin
   Select @TableName=name  From  #Temp Where id=@i
           Set @ExecSQL = 'Truncate Table ' + @TableName
   Exec(@ExecSQL)
           SET @i=@i+1
        end

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
我建立一个存储过程来删除数据库中的数据。

#8


1、分离数据库

2、拷贝数据/日志文件并重命名

3、将重命名的文件附加到数据库实例

4、用以下语句清除新数据库中的数据:

-- 删除数据库中的所有数据(通过禁用约束) 
-- 不好的地方在于如果本身有已经禁用的约束,执行这个后会开启它 

-- 邹建 2005.09(引用请保留此信息) 
-- ===================================================== 
-- 禁用所有约束 
EXEC sp_msforeachtable 
@command1=N'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 

-- 删除有数据R的表 
EXEC sp_msforeachtable 
@command1=N'DELETE ?', 
@whereand=N'AND EXISTS( 
SELECT rows FROM dbo.sysindexes 
WHERE id=O.id 
AND rows>0 
AND indid<2)' 

-- 启用所有约束 
EXEC sp_msforeachtable 
@command1=N'ALTER TABLE ? CHECK CONSTRAINT ALL' 
GO

#9


--先禁用所有外键约束
exec sp_msforeachtable "alter table ? nocheck CONSTRAINT all"

--禁止所有触发器
exec sp_msforeachtable "alter table ? disable trigger all"

--然后删除数据
/*exec sp_msforeachtable @command1='truncate table ?'
                       ,@whereand='and name not like ''sys%'' 
                                   and name not in(''dtproperties'',''特殊表2'',''特殊表3'')'*/
  exec sp_msforeachtable @command1='truncate table ?',
 @whereand=' and objectproperty(o.id,''TableHasForeignRef'')=0'
  exec sp_msforeachtable @command1='delete from ?',
 @whereand=' and objectproperty(o.id,''tablehasforeignref'')=1'
--再启用所有外键约束
exec sp_msforeachtable "alter table ? check constraint all"

--启用所有触发器
exec sp_msforeachtable "alter table ? enable trigger all"

#10


办法都不错哦,看楼主选哪个了,都能实现的,嘎嘎

#11


引用lengxiaowei(小伟)的,最好还是加上禁止所有触发器功能