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

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

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

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

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

posted @   Libra  阅读(515)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示