Как удалить данные из всех таблиц из базы данных, кроме нескольких таблиц

У меня в базе данных более 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 ответ

Решение

Использование IF ''?'' NOT IN (''TABLE1'',''TABLE2'') до вашего DELETE FROM [?]
Кстати, я предлагаю использовать TRUNCATE TABLE [?] вместо DELETE FROM [?]

Другие вопросы по тегам