如何从数据库中删除除少数表之外的所有表中的数据

问题描述 投票:0回答:2

我的数据库中有 50 多个表,我想删除 48 个表中的所有数据。

我尝试使用

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'

EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'

GO

但是它会删除所有表中的所有数据。

有人可以建议我需要进行哪些更改才能从查询中除 TABLE1、TABLE2 等之外的所有表中删除数据:

EXEC sp_MSForEachTable 'DELETE FROM ?  '

我使用的是 SQL Server 2008R2。

sql-server sql-server-2008-r2 sp-msforeachtable
2个回答
3
投票

IF ''?'' NOT IN (''TABLE1'',''TABLE2'')
 之前使用 
DELETE FROM [?]
顺便说一句,我建议使用
TRUNCATE TABLE [?]
而不是
DELETE FROM [?]


0
投票

使用此行在查询中拆分 TABLE1、TABLE2 等并运行它:

选择* 进入#temp FROM 系统表 名称不在(表 1,表 2,...)中

----------------------------然后使用这个==>--------------- --

执行 sp_MSForEachTable @command1='设置 QUOTED_IDENTIFIER ON;删除自?;打印''删除?''', @whereand = 'and object_name(object_id) in (select name from #temp)';

它对我有用,我希望对你有用!

© www.soinside.com 2019 - 2024. All rights reserved.