11 个解决方案
#1
可以从企业管理器中生成所有对象的sql脚本,利用脚本重新建立数据库.
#2
YES 用脚本重建最快!
#3
谢谢,能说一下步骤吗??
#4
只有利用企业管理器,选中所有表,点击右键--所有任务--生成SQL脚本(G)...--点击选项标签
--表选项的所有复选框都打上勾--点击确定
生成的脚本文件放到查询分析器执行就OK
--表选项的所有复选框都打上勾--点击确定
生成的脚本文件放到查询分析器执行就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
我建立一个存储过程来删除数据库中的数据。
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
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"
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
--表选项的所有复选框都打上勾--点击确定
生成的脚本文件放到查询分析器执行就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
我建立一个存储过程来删除数据库中的数据。
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
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"
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(小伟)的,最好还是加上禁止所有触发器功能