Qairat
@Qairat
frontend developer, angular 2+

Как массово очистить все таблицы сразу в MsSql?

Всем привет!
Как массово очистить все таблицы сразу в MsSql?
Чтобы каждой таблице не писать truncate table.
  • Вопрос задан
  • 1978 просмотров
Пригласить эксперта
Ответы на вопрос 2
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Что то типа такого:
declare @s nvarchar(max)  = ''
select @s  = @s  +
'truncate table '+TABLE_NAME+';'
  from INFORMATION_SCHEMA.TABLES 

exec (@s)
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Дурацкий, но "бронебойный" вариант:

DECLARE @execute_cmd varchar(max)= '';

-- выбрать один из трех вариантов по вкусу
--SELECT @execute_cmd = @execute_cmd+'begin try  truncate table ['+name+'] end try  begin catch end catch ' FROM sys.tables WHERE type_desc = 'USER_TABLE';

--SELECT @execute_cmd = @execute_cmd+'begin try  truncate table ['+TABLE_NAME+'] end try  begin catch end catch ' FROM information_schema.tables WHERE TABLE_TYPE = 'BASE TABLE';

--SELECT @execute_cmd = @execute_cmd+'begin try  truncate table ['+Name+'] end try  begin catch end catch ' FROM dbo.sysobjects WHERE xtype = 'U';

EXECUTE @execute_cmd;


и потом многократно "долбить" последнюю строку....

ибо foreign key и просто так удалить таблицу, на которую ссылаются данные из другой таблицы - не вариант
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы