SQL Server Drop Table With Foreign Key Constraint (刪除資料表)


  1. 說明

筆記 SQL Server 如何處理「無法卸除物件 ‘dbo.TableName’,因為 FOREIGN KEY 條件約束參考該物件。」的批次刪除資料表及條件約束的方式。

SQL Server Logo

說明

首先透過 Script 找出所有的 Foreign Key Constraint 並進行刪除。

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += 'ALTER TABLE ' + QUOTENAME(tp.name) + 
               ' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';' + CHAR(13)
FROM 
    sys.foreign_keys AS fk
INNER JOIN 
    sys.tables AS tp ON fk.parent_object_id = tp.object_id;

PRINT @sql

--EXEC sp_executesql @sql;

接著就可以進行資料表刪除:

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += 'DROP TABLE ' + QUOTENAME(name) + ';' + CHAR(13)
FROM 
    sys.tables;

PRINT @sql

--EXEC sp_executesql @sql;

EXEC 註解的部分是實際執行刪除的動作,在實際作業前應該要先備份並且透過 PRINT 檢視要刪除的標的是否正確,如果無誤才能夠解開註解執行 EXEC 😊