日期:2014-05-17  浏览次数:20646 次

如何decimal(4, 2)修改为decimal(5, 2)
SQL server 2005,要把表字段decimal(4, 2)修改为decimal(5, 2),表中有大量数据,怎么修改?
查询分析器使用这个语句提示错误:ALTER TABLE  波段 ALTER COLUMN 分 decimal(5, 2)

------解决方案--------------------
请问提示什么错误?
------解决方案--------------------
引用:
Quote: 引用:

提示
消息 5074,级别 16,状态 8,第 1 行
对象 'PK_波段' 依赖于 列 '分'。
消息 5074,级别 16,状态 8,第 1 行
对象 'PK_波段' 依赖于 列 '分'。
消息 4922,级别 16,状态 9,第 1 行
ALTER TABLE ALTER COLUMN 分 失败,因为有一个或多个对象访问此列。

我程序都关掉了 没有在访问啊


主键列不能这样修改的,需要重新建立,填充数据才行。


或者先撤了主键,然后修改,再设为主键。 这个如果是上线的数据,lz尽量在业务低频段处理。注意重新设为主键,lz要对统计信息进行重新处理。否则,前台程序会慢。

这种扩展确实闹心啊。

------解决方案--------------------
引用:
提示
消息 5074,级别 16,状态 8,第 1 行
对象 'PK_波段' 依赖于 列 '分'。
消息 5074,级别 16,状态 8,第 1 行
对象 'PK_波段' 依赖于 列 '分'。
消息 4922,级别 16,状态 9,第 1 行
ALTER TABLE ALTER COLUMN 分 失败,因为有一个或多个对象访问此列。

我程序都关掉了 没有在访问啊

还有一些进程在访问这张表所以无法修改,可以用SP_WHO2查看那些session还在数据库中,可以Kill掉或者先把数据库修改为单用户然后再访问。数据量大的话直接在SSMS上用UI修改肯定会超时,建议你生成脚本然后在查询界面执行,这样就不会有超时的限制了。