日期:2014-05-18  浏览次数:20596 次

修改表的字段长度时提示正用于复制如何解决?
我把UserInfo表的一个类型为nvarchar(100)的字段改为nvarchar(30)的字段类型时提示以下信息:
-----------
“UserInfo”表
-   无法修改表。    
ODBC   错误:   [Microsoft][ODBC   SQL   Server   Driver][SQL   Server]无法   除去   表   'dbo.UserInfo ',因为它正用于复制。
-----------
我在CSDN上找到的方法试了还是不行,请问应该如何解决?
http://community.csdn.net/Expert/topic/5106/5106265.xml?temp=.164654


------解决方案--------------------
说明这个表正在被使用,停止其他对这个表的操作再修改
------解决方案--------------------
再说本人认为没必要改下一般都是不够才改大的,定义大一点没什么影响呀
------解决方案--------------------
sp_repladdcolumn @source_object = 'UserInfo ',@column = 'colNametmp ',@typetext= 'nvarchar(30) NULL '
GO
update UserInfo set colNametmp=colName
GO
sp_repldropcolumn @source_object = 'UserInfo ',,@column = 'colName '
GO
sp_repladdcolumn @source_object = 'UserInfo ',@column = 'colName ',@typetext= 'nvarchar(30) NULL '
GO
update UserInfo set colName=colNametmp
GO
sp_repldropcolumn @source_object = 'UserInfo ',,@column = 'colNametmp '
GO
--colName 需要修改的字段
--colNametmp 临时字段,用来中转数据

我是这样做的,不知道还有没有更好的办法
------解决方案--------------------
你要把colName换成你要改的字段名字才行
sp_repldropcolumn @source_object = 'UserInfo ',,@column = 'colName '
中间多了一个豆号
sp_repldropcolumn @source_object = 'UserInfo ',@column = 'colName '
最后那句也是

------解决方案--------------------
先不要对这个表进行复制!
------解决方案--------------------
up
------解决方案--------------------
建完数据库后完全可以修改表结构字段类型