刪除所有的用戶表的外鍵,直接將下面的代碼拷貝到數據庫里執行即可:
--查詢刪除前的當前數據庫所有約束 select * from information_schema.key_column_usage declare @TableName nvarchar(250) --聲明讀取數據庫所有數據表名稱游標mycursor1 declare mycursor1 cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1 --打開游標 open mycursor1 --從游標里取出數據賦值到我們剛才聲明的數據表名變量中 fetch next from mycursor1 into @TableName --如果游標執行成功 while (@@fetch_status=0) begin --定義當前外鍵約束變量 declare @ConstraintName varchar (200) --刪除當前數據表的所有外鍵約束 --聲明讀取數據表所有外鍵約束名稱游標mycursor2 declare mycursor2 cursor for select name from dbo.sysobjects where Xtype = 'F' and Parent_Obj = (select [ID] from dbo.sysobjects where id = object_id(N'['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1) --打開游標 open mycursor2 --從游標里取出數據賦值到外鍵約束名稱變量中 fetch next from mycursor2 into @ConstraintName --如果游標執行成功 while (@@fetch_status=0) begin --刪除當前找到的外鍵 exec ('ALTER TABLE '+@TableName+' DROP CONSTRAINT '+@ConstraintName) --print 'ALTER TABLE '+@TableName+' DROP CONSTRAINT '+@ConstraintName --用游標去取下一條記錄 fetch next from mycursor2 into @ConstraintName end --關閉游標 close mycursor2 --撤銷游標 deallocate mycursor2 --用游標去取下一條記錄 fetch next from mycursor1 into @TableName end --關閉游標 close mycursor1 --撤銷游標 deallocate mycursor1 --查詢刪除后的當前數據庫所有約束 select * from information_schema.key_column_usage
刪除所有的數據表,也是直接執行下面的代碼:
declare @sql varchar(8000) SELECT @sql='drop table ' + name FROM sysobjects WHERE (type = 'U') ORDER BY 'drop table ' + name exec(@sql)