sql >> Databasteknik >  >> RDS >> Sqlserver

Hur släpper man en lista med SQL Server-tabeller, ignorerar begränsningar?

Det beror på hur du vill släppa borden. Om listan över tabeller behöver släppas täcker nästan över 20 % av tabellerna under din DB.

Sedan kommer jag att inaktivera alla begränsningar i den DB under mitt skript och släppa tabellerna och aktivera begränsningarna under samma skript.

--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'

Slutligen för att kontrollera statusen för dina begränsningar, starta den här frågan.

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

Om du inte vill inaktivera begränsningarna på databasnivå gör du en lista över tabeller som du vill ta bort.

Steg 1:Kontrollera de begränsningar som är associerade med dessa tabeller

SELECT * 
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Tablename')

Steg 2 :Inaktivera begränsningarna som är associerade med dessa tabeller.

ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint

Steg 3 :Släpp tabellerna

DROP TABLE TABLENAME


  1. Hur tar man bort varje tabell i ett specifikt schema i postgres?

  2. JDBCTemplate set kapslade POJO med BeanPropertyRowMapper

  3. Jasper Report:kan inte få värde för fältet 'x' i klassen 'org.postgresql.util.PGmoney'

  4. Vad är dynamisk SQL?