mssql sqlserver ALTER TABLE 修改表时,出现“因为有一个或多个对象访问此列”的修正方法分享


摘要:
下文讲述sqlserver中修改表时,出现“有一个或多个对象访问此列”的处理方法分享,如下所示:

今天修改数据表时,出现以下异常信息


消息 5074,级别 16,状态 1,第 2 行
对象’DF__TRTRTRTRTS_M__MAOMAO__R33343′ 依赖于 列’MAOMAO_WRITEDATE’。
消息 4922,级别 16,状态 9,第 2 行
由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN MAOMAO_WRITEDATE 失败。


J经过分析,我们发现出现这种情况,是由于数据表中有其它约束依赖此列,所以我们无法对列进行删除,那么下文将讲述具体的修正方法,如下所示:

方法1:通过SSMS设计器直接删除约束

1.在数据表上点击右键“设计表”
2.在设计窗体中,找到约束,然后保存表设置
3.再次运行删除列操作


方法2:通过sql脚本查询出脚本,然后删除约束

---获取列名上的约束信息
 declare @name sysname
select  @name =b.name from sysobjects b
  left join syscolumns a on b.id = a.cdefault 
where a.id = object_id('数据表名称') 
and a.name ='列名'

 ---根据获取的name,运行删除约束的脚本

exec('alter table 数据表名称 drop constraint ' + @name)