如何从数据库中删除所有表中的数据,除了少数表

时间:2017-04-20 10:03:28

标签: sql-server sql-server-2008-r2 sp-msforeachtable

我的数据库中有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。

1 个答案:

答案 0 :(得分:3)

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