Comment supprimer toutes les tables et réinitialiser une base de données Azure SQL

Comment supprimer toutes les tables et réinitialiser une base de données Azure SQL

Puisqu’il n’existe pas de moyen via l’API pour faire cela à ma connaissance, nous avons utilisé ce script pour exploiter une requête T-SQL afin de vider la base de données.

Pour supprimer chaque table (et conserver vos historiques de migration EF si vous le souhaitez)

while(exists(select 1 from INFORMATION_SCHEMA.TABLES
             where TABLE_NAME != '__EFMigrationsHistory'
             AND TABLE_TYPE = 'BASE TABLE'))
begin
 declare @sql nvarchar(2000)
 SELECT TOP 1 @sql=('DROP TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME
 + ']')
 FROM INFORMATION_SCHEMA.TABLES
 WHERE TABLE_NAME != '__MigrationHistory' AND TABLE_TYPE = 'BASE TABLE'
exec (@sql)
 /* you dont need this line, it just shows what was executed */
 PRINT @sql
end

Pour supprimer d’abord les clés étrangères si nécessaire

while(exists(select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='FOREIGN KEY'))
begin
 declare @sql nvarchar(2000)
 SELECT TOP 1 @sql=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME
 + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
 FROM information_schema.table_constraints
 WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
 exec (@sql)
 PRINT @sql
end

Lors de mes tests, cela a fonctionné sans problème (sauf que je n’avais pas la clause where dans la requête while de DROP TABLE puisque je n’utilise pas Code First ou les migrations EF).