4

当我尝试更改此列列表时:

Nombre
Imagen
Descripcion
Activo
IdLineaProducto

进入这个(IdLineaProducto 是第一个)

IdLineaProducto
Nombre
Imagen
Descripcion
Activo

SQL Server Management Studio 表示不允许保存更改,因为必须删除并重新创建表(西班牙语......)。我可以在 SQL Server 2005 中执行此操作,但不能在 SQL Server 2008 中执行此操作。

在其他情况下也会发生同样的情况,例如尝试将 int 非标识列转换为标识。为什么会这样?我该如何解决这个问题?也许是一些配置错误的问题?SQL Server 中的一些新功能?

4

2 回答 2

4

我找到了解决这个问题的方法。

This is by design and can be quickly fixed in Management Studio by unchecking a property. To fix this in Management Studio, go to Tools -> Options then go to the Designer Page and uncheck "Prevent saving changes that require table re-creation".

Beware that it may have undesired consequences, like losing data in other tables related to this.

于 2009-05-30T22:32:59.240 回答
1

这就是它的工作方式......您只能将列添加到末尾,除非您DROPCREATE它(通常将数据复制出和复制回,IDE 可能会提供帮助)。但是为什么要更改顺序?即使它不理想,你的SELECT等也可以处理这个......即

SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM   TheTable
...

(仅使用很少是一个好主意SELECT *


重新IDENTITY; 再次,这是列的基础 - 尽管在这种情况下,您可以将数据复制出来,DROP列,然后ADD将列重新复制为IDENTITY(在右侧),然后将其复制回来 - 但是您会遇到额外的复杂情况IDENTITY INSERTSEED值(因此您不会尝试获取现有身份值的重复项)。

于 2009-05-30T22:08:01.007 回答