刪除所有的用戶表的外鍵,直接將下面的代碼拷貝到數據庫里執行即可:
--查詢刪除前的當前數據庫所有約束
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)
