◎ exec sp_unbindrule '列名'

解决方案 »

  1.   

    大致是这样:你的表在@tbl。declare @c table(row int identity primary key,command varchar(8000))
    insert @c(command)
      select 'alter table '+@tbl+' drop constraint '+name
        from sysconstraints where parent_obj=object_id(@tbl)
           and type in ('F','K',C')
    declare @p int,@s varchar(8000)
    set @p=1
    while @p<=(select max(row) from @c)
      begin
      select @s=command from @c where row=@p
      exec(@s)
      set @p=@p+1
      end
    注:
    'F','K',C'只是例子,你还可以删除更多类型的约束。
    也许需要删除其它表对此表的外键,才能删除此表的主键等信息,这时候,可以在上边 select之前写另一个查询(用union all并列),从sysforeignkeys中捡出所有引用本表的外键,也从那些表中删除那些约束(实际是外键约束)。
      

  2.   

    declare @a varchar(20)
    select @a=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('表名') and a.name='主鍵列名' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
    exec('alter table 表名 drop constraint '+@a)