Depende de cómo quiera soltar las tablas. Si la lista de tablas necesita colocar cubiertas casi por encima del 20% de las tablas en su base de datos.
Deshabilitaré todas las restricciones en ese DB bajo mi secuencia de comandos y soltaré las tablas y Habilitaré las restricciones bajo el mismo 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'
Finalmente, para verificar el estado de sus restricciones active esta consulta.
--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 no desea desactivar las restricciones a nivel de base de datos a continuación, hacer una lista de tablas que desea colocar.
Paso 1: Comprobar las restricciones asociadas a los thos tablas
SELECT *
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Tablename')
Paso 2: Desactivar las restricciones que se asocian con estas tablas.
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint
Paso 3: eliminar las tablas
DROP TABLE TABLENAME
Gracias, pero mi problema es que precisamente hay un montón de FK generado. –