テーブルを削除する方法によって異なります。テーブルのリストを削除する必要がある場合、DB の下のテーブルのほぼ 20% をカバーします。
次に、スクリプトでその DB のすべての制約を無効にし、テーブルを削除して、同じスクリプトで制約を有効にします。
--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'
プレ>最後に、制約のステータスを確認するために、このクエリを起動します。
--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
プレ>データベース レベルで制約を無効にしたくない場合は、削除するテーブルのリストを作成してください。
Step1 :テーブルに関連付けられている制約を確認します
SELECT * FROM sys.foreign_keys WHERE referenced_object_id = object_id('dbo.Tablename')
プレ>ステップ 2 :これらのテーブルに関連付けられている制約を無効にします。
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint
プレ>ステップ 3 :テーブルを削除する
DROP TABLE TABLENAME
プレ>