修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
2012-09-21 15:29
549 查看
在SQL数据库中使用SQL语句(格式:alter table [tablename] alter column [colname] [newDataType])修改某表的字段类型时,报一下错误:
“**********************************
对象'DF__******' 依赖于 列'column1'。
***********************************
由于一个或多个对象访问此列,ALTER TABLE ******** 失败。”
根据上述提示在网上搜索结果,得知发生该错误的原因在于要修改的字段存在Default约束,解决方法:
1.查找出表中该字段的约束名称(或根据已有的提示及对象'DF__******')
declare @name varchar(50)
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('TableName')
and a.name ='ColumName'
2. 删除存在的约束
exec('alter table TableName drop constraint ' + @name)
3. 再执行修改字段类型的脚本即可
综合查阅资料发现:将表中的字段设置为NOT NULL(不为空)、给字段增加Default值(默认值)这样的操作都会给该字段添加约束,增加了这些约束后,在用SQL脚本修改字段类型、删除字段的时候均会发生类似错误,需要查找该字段上已存在的约束,并删除存在的约束,再次执行修改/删除脚本即可。
资料引用:
1. 修改字段类型时出现的 依赖于 列Classinfo_ShowType,因为有一个或多个对象访问此列
2. SQL Server】sql语句删除表的有默认值的列
“**********************************
对象'DF__******' 依赖于 列'column1'。
***********************************
由于一个或多个对象访问此列,ALTER TABLE ******** 失败。”
根据上述提示在网上搜索结果,得知发生该错误的原因在于要修改的字段存在Default约束,解决方法:
1.查找出表中该字段的约束名称(或根据已有的提示及对象'DF__******')
declare @name varchar(50)
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('TableName')
and a.name ='ColumName'
2. 删除存在的约束
exec('alter table TableName drop constraint ' + @name)
3. 再执行修改字段类型的脚本即可
综合查阅资料发现:将表中的字段设置为NOT NULL(不为空)、给字段增加Default值(默认值)这样的操作都会给该字段添加约束,增加了这些约束后,在用SQL脚本修改字段类型、删除字段的时候均会发生类似错误,需要查找该字段上已存在的约束,并删除存在的约束,再次执行修改/删除脚本即可。
资料引用:
1. 修改字段类型时出现的 依赖于 列Classinfo_ShowType,因为有一个或多个对象访问此列
2. SQL Server】sql语句删除表的有默认值的列
相关文章推荐
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 一个关于“OLE DB 提供程序 'sqloledb' 指出该对象中没有任何列”错误的解决方法
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- 关于文件不能访问,IIS提示MIME类型没有错误的解决方法
- ORACLE里怎么能判断一个日期类型的字段是否为空,解决方法:is null
- 解决方法:Submit 操作失败。为类型“BomExtend”上的集合属性“BomChildrenList”传递了一个或多个关联对象,但目标集合为 null。
- SQL数据库连接出现[错误2]与[错误17]的一个解决方法
- 相等的两个对象其中一个属性值修改,会影响另一个值;解决方法
- 出现“发生访问冲突”类型错误的解决方法
- mx:states包含mx:AddChild 在切换时提示错误"TypeError: Error #1009: 无法访问空对象引用的属性或方法"的解决方法
- “Internet连接共享访问被启用时,出现了一个错误” 解决方法
- 关于使用ASP.NE 1.1发送电子邮件时出现的 未能访问“CDO.Message”对象 的错误的解决方法
- C# 001 --- 正确的删除一个控件的事件函数 --- 解决错误: “A”不包含“B”的定义,并且找不到可接受类型为“A”的第一个参数的扩展方法“B”(是否缺少 using 指令或程序集引用?)
- 主从复制在丛库修改字段类型导致复制异常及解决方法