[Developer's community]

Полезные скрипты (T-SQL), полное удаление данных из таблиц БД

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

 

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).

Add comment

Loading