从sysconstraints中删除约束是否安全(因为“drop constraint”失败)?

时间:2017-09-21 15:50:35

标签: sql sql-server

当我运行这个SQL时:

IF EXISTS
(select a.id, a.name ,b.name
from sysobjects a, sysobjects b, sysconstraints c
where a.name = 'my_index_name'
  and b.name = 'my_table'
  and a.id = c.constid
  and c.id = b.id) 
  BEGIN
    ALTER TABLE my_table
    DROP CONSTRAINT my_index_name
  END

...它一直运行直到取消,此时SSMS发出错误:

Msg 3727, Level 16, State 0, Line 9
Could not drop constraint. See previous errors.

我尝试将约束更改为NOCHECK,但它已经是。我分别运行查询的存在检查部分,索引确实存在。

我有足够的SQL知识能够从sysconstraints和sysobjects中删除约束,但我想知道这是否会破坏我的数据库(特别是,我想知道以后尝试重新创建相同索引名称的SQL是否会失败由于剩余的磁盘文件/ SQL Server管理的数据。)

有没有办法实际“看到以前的错误”(因为SSMS中没有可见的)?

1 个答案:

答案 0 :(得分:0)

这个问题没有实际意义,正如Sean Lange指出的那样:

Msg 259,Level 16,State 1,Line 1 不允许对系统目录进行临时更新。