Preamble

我今天正在修改 SQL Server 2008 中的一列,将数据类型从货币(18,0)更改为(19,2)。

我从 SQL Server 收到错误"您所做的更改需要删除并重新创建以下表"。

Before you scramble to answer, please read the following:

我已经知道有这个选项Tools ► Options ► Designer ► Table and Database Designers ► Uncheck the box “防止保存需要重新创建表的更改。”Prevent saving changes that require table re-creation in five clicks …所以do not就这样回答吧!

Actual question

我的实际问题是其他的,如下:

这样做有任何负面影响/可能的缺点吗?

当取消选中此框时,表实际上会自动删除并重新创建吗?

如果%20如此,%20是%20the%20table%20copy%20a%20100%%20exact%20replica%20of%20the%20source%20table?

答案

只有在 SQL Server Management Studio 被编程为知道如何执行此操作的唯一方法的情况下,才会删除并重新创建该表。

当然,在某些情况下,它会在不需要时执行此操作,但也有一些情况下,您在 Management Studio 中进行的编辑会不是删除并重新创建,因为它没有必要。

问题在于,枚举所有案例并确定它们属于哪一边将是相当乏味的。

这就是为什么我喜欢使用ALTER TABLE在查询窗口中,而不是隐藏他们正在做的事情的视觉设计师(坦率地说有错误) - 我确切地知道将要发生什么,并且我可以为唯一可能是删除并重新创建的情况做好准备

这样做有任何负面影响/可能的缺点吗?

当然。

当取消选中此框时,表实际上会自动删除并重新创建吗?

可能首先在数据库的无意义副本上,但恕我直言,使用实际的 ALTER TABLE 脚本而不是点击式 GUI 是正确的方法。

如果%20如此,%20是%20the%20table%20copy%20a%20100%%20exact%20replica%20of%20the%20source%20table?

是的,%20if%20SSMS%20has%20to%20rebuild%20the%20table,%20it%20will%20be%20a%20100%%20exact%20replica%20after%20it%27s%20done%20(除了%20for%20the%20change

来自: stackoverflow.com