Иногда, во время тестирования, бывает нужно удалить все данные из какой-нибудь конкретной БД (сценариев использования на самом деле больше). Вручную это делать неинтересно и временами нереально (при больших объемах данных), к тому-же, было-бы неплохо обнулить нумерацию в таблицах. Для это вводим следующий скрипт:
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1
DELETE FROM ?
else
TRUNCATE TABLE ?
'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable '
IF OBJECTPROPERTY(object_id(''?''), ''TableHasIdentity'') = 1
DBCC CHECKIDENT (''?'', RESEED, 0)
'
GO
Первая часть скрипта отключает контроль ссылочной целостности, затем удаляет все данные из всех таблиц (строки 1-10). Вторая чать скрипта включает контроль ссылочной целостности (строки 11-12). И последний кусок кода кстанавливает начальные значения счетчиков в 0 (оператор RESEED).