Иногда, во время тестирования, бывает нужно удалить все данные из какой-нибудь конкретной БД (сценариев использования на самом деле больше). Вручную это делать неинтересно и временами нереально (при больших объемах данных), к тому-же, было-бы неплохо обнулить нумерацию в таблицах. Для это вводим следующий скрипт:
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).
Comments