2017-04-20 100 views
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。

+0

这可能会帮助你http://stackoverflow.com/questions/7852979/how-to-exclude-tables-from -sp-msforeachtable – TriV

+0

它工作。谢谢! – Maltesh

回答

2

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

+0

它工作。谢谢! – Maltesh

+0

不要忘记接受答案;) – Hybris95

相关问题