Дурацкий, но "бронебойный" вариант:
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 и просто так удалить таблицу, на которую ссылаются данные из другой таблицы - не вариант