2017-04-20 14 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

TRUNCATE TABLE [?]を使用することをお勧めする前にhttp://stackoverflow.com/questions/7852979/how-to-exclude-tables-from -sp-msforeachtable – TriV

+0

それは働いた。ありがとう! – Maltesh

答えて

2

使用IF ''?'' NOT IN (''TABLE1'',''TABLE2'')これはあなたを助けるかもしれないあなたがところでDELETE FROM [?]
、私が代わりにDELETE FROM [?]

+0

それは働いた。ありがとう! – Maltesh

+0

答えを受け入れることを忘れないでください;) – Hybris95

関連する問題