sql >> Databáze >  >> RDS >> Sqlserver

Jak zrušit seznam tabulek SQL Server, ignorovat omezení?

Záleží na tom, jak chcete shazovat tabulky. Pokud je potřeba seznam tabulek vypustit, pokrývá téměř 20 % tabulek ve vaší DB.

Potom zakážu všechna omezení v této DB pod svým skriptem a zruším tabulky a povolím omezení pod stejným skriptem.

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

Nakonec pro kontrolu stavu vašich omezení spusťte tento dotaz.

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

Pokud nechcete deaktivovat omezení na úrovni databáze, vytvořte seznam tabulek, které chcete zrušit.

Krok 1:Zkontrolujte omezení spojená s těmito tabulkami

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

Krok 2:Deaktivujte omezení, která jsou spojena s těmito tabulkami.

ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint

Krok 3:Zahoďte stoly

DROP TABLE TABLENAME


  1. mysql Problém se spouštěčem ve špatném schématu

  2. Porovnání Oracle MySQL, Percona Server a MariaDB

  3. Během zpracování požadavku došlo k výjimce:null:java.lang.NullPointerException using Spring, Struts 2, Hibernate, MySql

  4. Rozdíl mezi IAM, IDCS a OCI v cloudu Oracle