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

表结构不能被修改
现在我们公司的数据库表结构修改时出现了很奇怪现象:新增字段时可以,如将现有字段允许为空,更改为不允许为空(表中所有数据都不为空),或将字段序号从1更改其他的序号等就会出现诸如:某表
- 无法修改表。  
无效事务状态: [Microsoft][ODBC SQL Server Driver][SQL Server]The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.”提示错误,请问这是什么问题,如何解决,多谢了!!!

------解决方案--------------------
在这之前你们做过什么大的操作没有呢?
------解决方案--------------------
alter table t with nocheck add col int not null default(1)--新增列不为null,如果列已经有数据,指定默认值

或在企业管理里—设计表—添加列

------解决方案--------------------
关注这个问题!!
------解决方案--------------------
如果表中已经有数据,并且其值已经为NULL,那么你把这个有NULL值得字段该为不允许为NULL,那就会出错。
至于修改表字段的序号....呵呵,没有试过,不知道能不能行。
但是,为什么要修改字段的序号呢?
一个字段在第一位和在最后一位并没有什么太大的影响....

如果实在要调整字段,把现在表中的数据按新的字段dump到一个文本文件中,
重建一个新表,
把数据装回去就可以了。

不知道还有没有更有效的方法

------解决方案--------------------
新增字段时可以,如将现有字段允许为空,更改为不允许为空(表中所有数据都不为空),或将字段序号从1更改其他的序号等就会出现诸如:某表 - 无法修改表。 


这个问题看来是权限的问题了,

新增字段只需要Alter Table即可

可以要允许为空或者调整栏位顺序是需要先drop后新建表的,
LZ在企业管理器中修改这个东西的时候,可以点击上面菜单栏里面的脚本按钮,看看生成的语句是不是这样