Cela dépend de la façon dont vous voulez déposer les tables. Si la liste des tables doit être supprimée, couvre presque plus de 20 % des tables de votre base de données.
Ensuite, je vais désactiver toutes les contraintes de cette base de données sous mon script, supprimer les tables et activer les contraintes sous le même script.
--To Disable a Constraint at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
--Write the code to DROP tables
DROP TABLE TABLENAME
DROP TABLE TABLENAME
DROP TABLE TABLENAME
--To Enable a Constraint at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
Enfin, pour vérifier l'état de vos contraintes, lancez cette requête.
--Checks the Status of Constraints
SELECT (CASE
WHEN OBJECTPROPERTY(CONSTID, 'CNSTISDISABLED') = 0 THEN 'ENABLED'
ELSE 'DISABLED'
END) AS STATUS,
OBJECT_NAME(CONSTID) AS CONSTRAINT_NAME,
OBJECT_NAME(FKEYID) AS TABLE_NAME,
COL_NAME(FKEYID, FKEY) AS COLUMN_NAME,
OBJECT_NAME(RKEYID) AS REFERENCED_TABLE_NAME,
COL_NAME(RKEYID, RKEY) AS REFERENCED_COLUMN_NAME
FROM SYSFOREIGNKEYS
ORDER BY TABLE_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, KEYNO
Si vous ne souhaitez pas désactiver les contraintes au niveau de la base de données, créez une liste des tables que vous souhaitez supprimer.
Etape1 :Vérifier les Contraintes associées à ces tables
SELECT *
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Tablename')
Étape 2 :Désactivez les contraintes associées à ces tables.
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint
Étape 3 :Déposez les tables
DROP TABLE TABLENAME