Как удалить данные из всех таблиц из базы данных, кроме нескольких таблиц
У меня в базе данных более 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 [?]