批量刪除MSSQL 中主外來鍵約束

Adeal2008發表於2018-09-25

轉自: http://www.maomao365.com/?p=813

在製作 MSSQL同步工具的時候,發現由於主外來鍵的約束,導致資料同步異常,所有我們需要把 讀資料庫裡面的主外來鍵約束,進行批量刪除操作.

表同步工具

1 如何批量查詢資料庫的主外來鍵?
在MSSQL2005以上版本中,系統提供一個系統檢視 sys.foreign_keys 可以查詢出系統所有的外來鍵約束
外來鍵查詢sql指令碼
2 如何批量刪除資料庫的主外間鍵?

--------------------------------------------------------------------------

create table #t (keyId int identity,name varchar(200),tbname varchar(200))

insert into #t (name,tbName) 
select a.name,b.name from sys.foreign_keys a 
left join sysobjects b on a.parent_object_id = b.id 
declare @i int,@imax int,@name varchar(200) ,@tbName varchar(200)

select @i=MIN(keyId) from #t 
select @imax=MAX(keyid) from #t

while @i<=@imax
begin
set @name=`` 
set @tbName =``
select @name =name,@tbName=tbname from #t where keyId=@i
--print @name 
--print @tbName 

print(` ALTER TABLE [`+@tbname +`] DROP CONSTRAINT [`+@name+`]`)
exec(` ALTER TABLE [`+@tbname +`] DROP CONSTRAINT [`+@name+`]`)

set @i=@i+1
end


truncate table #t 
drop table #t

----------------------------------------------------------

同步工具,剔除外來鍵約束後,一切正常 

相關文章