SQL Server 2008中的“阻止保存要求重新创建表的更改”

     当在SQL Server 2008中建好一张表后,如果要在Management Studio中修改表结构,十有八九会弹出“阻止保存要求重新创建表的更改”,恼人得很。根据我的使用,除了改列名或者删除列才有可能不弹出该提示,其它很多情况都会跳出这个该死的提示,样子如图:

     解决的方法其实也很简单:在Management Studio里找菜单栏上的“工具”然后点击下面的选项,在出现的下面的这个界面中展开“设计器”项,选中“表设计器和数据库设计器”,然后去掉“ 阻止保存要求重新创建表的更改”前面的勾就行了,如图:

     究其原因,应该是某些DDL会改变存储的物理结构,因此需要重新构建该表。SQL Server在改变物理结构都变动的表结构时会先将数据移到暂存表中,然后Drop掉原先的表,再建立一张新的符合要求的表,之后又把刚才暂存表中的数据复制回来,最后再删除暂存表。由此可见,这个过程极有可能会十分耗时,这将会导致该表长时间不能被访问,Stuido的守候sessions将会超时出错。为了避免出现这种错误,微软的做法就是在默认的情况下不允许表的物理结构发生变动。

     看来应该是微软一时半载也想不出如何解决这个问题,于是就用“砍脚趾避沙虫”的愚蠢方法将就着解决这个问题。其实微软为什么不能人性化点,如果变动的表是空表或者是少于100条记录的表就不再提示那不好些么?我想,会改动表结构的情况一般是在开发的时候,真正生产了就算改动也会编程用ALERT TABLE语句,所以人性化点不会有太大的坏处。

posted @ 2008-12-01 12:55  Libra  阅读(510)  评论(0编辑  收藏  举报