Archiwum tagów: SQL Server

Usuwanie wszystkich danych z bazy na SQL Server

Czasami zachodzi potrzeba wyczyszczenia całej bazy danych. Jednym rozwiązaniem jest usunięcie bazy i odtworzenie całej struktury, jednak czasem jest to nieporęczne. Alternatywnie można skorzystać z wbudowanej procedury sp_MSForEachTable, która wykonuje zadane zapytanie na wszystkich tabelach w bazie.

Wykonamy więc następujące czynności:

  1. Wyłączenie constraintów
  2. Usunięcie danych
  3. Włączenie constraintów
  4. Zresetowanie kolumn typu identity

Skrypt:

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

Rozwiązanie zapożyczone z Small Workarounds