sql >> Database >  >> RDS >> Sqlserver

Hoe een lijst met SQL Server-tabellen te laten vallen, waarbij beperkingen worden genegeerd?

Het hangt af van hoe u de tabellen wilt neerzetten. Als de lijst met tabellen moet worden verwijderd, dekt bijna 20% van de tabellen onder uw DB.

Dan zal ik alle beperkingen in die DB onder mijn script uitschakelen en de tabellen laten vallen en de beperkingen onder hetzelfde script inschakelen.

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

Ten slotte, om de status van uw beperkingen te controleren, start u deze zoekopdracht.

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

Als u de beperkingen op databaseniveau niet wilt uitschakelen, maak dan een lijst met tabellen die u wilt verwijderen.

Stap1:Controleer de beperkingen die aan deze tabellen zijn gekoppeld

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

Stap 2:Schakel de beperkingen uit die aan deze tabellen zijn gekoppeld.

ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint

Stap3:laat de tafels vallen

DROP TABLE TABLENAME


  1. Hoe Min en Max waarde op dynamische draaitabel te tonen?

  2. mysql - voeg eerste en laatste records toe op groepstype?

  3. SQL Server Express-alternatieven boven de limiet van 2 GB

  4. SQLAlchemy-fout MySQL-server is verdwenen