Problema Cambio de orden de las columnas en una tabla (SQL Server 2008)
-
06-09-2019 - |
Pregunta
Cuando intento cambiar esta lista de columnas:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
en este (IdLineaProducto es primero)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio dice que no está permitido para guardar los cambios porque la tabla se debe eliminar y volver a crear (en español ...). Yo podría hacer esto en SQL Server 2005, pero no en SQL Server 2008.
Lo mismo sucede en otras situaciones, como tratar de transformar una columna de no identidad int a la identidad. ¿Por qué sucede esto? ¿Cómo puedo resolver esto? Tal vez algún problema de mal configurado? Algunos característica nueva en SQL Server?
Solución
Me pareció que el solución a este problema .
Esto es por diseño y puede ser rápida fijo en el estudio de la gerencia por desactivando una propiedad. Para solucionar este problema en Management Studio, vaya a Herramientas -> Opciones y luego van al diseñador de páginas y desactive "Impedir guardar cambios que requieren mesa de re-creación".
Tenga en cuenta que puede tener consecuencias no deseadas , como la pérdida de datos en otras tablas relacionadas con esto.
Otros consejos
Eso es sólo la forma en que funciona ... sólo puede agregar columnas a la final, a menos que DROP
y CREATE
que (normalmente la copia de los datos de ida y vuelta en el que el IDE puede ayudar con). Pero ¿Por qué ¿desea cambiar el orden? Incluso si no es ideal, su SELECT
etc puede manejar esto ... es decir.
SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM TheTable
...
(rara vez es una buena idea sólo tiene que utilizar SELECT *
)
Re el IDENTITY
; De nuevo, esto es fundamental para la columna - aunque en este caso se podría copiar los datos a cabo, DROP
la columna y re-ADD
la columna como IDENTITY
(en el lado derecho), y copiar de nuevo en - pero luego se va complicaciones adicionales con IDENTITY INSERT
y el valor SEED
(para que no se trate de obtener duplicados de valores de identidad existentes).