tabla - SQL Server Management Studio-¿Agregar/mover columnas requiere soltar y volver a crear?
permisos para modificar tabla sql server 2012 (5)
¿Por qué recibo un mensaje que indica que la tabla debe eliminarse y volver a crearse cuando agrego / muevo columnas? Creo que esto sucede después de agregar restricciones de clave externa.
¿Qué puedo hacer para agregar nuevas columnas sin quitar la tabla?
¡Porque así es como lo hace SQL Server Management Studio (a veces)!
Use ALTER TABLE de TSQL en su lugar:
ALTER TABLE
ADD myCol int NOT NULL
Cuando edita una definición de tabla en el diseñador, está diciendo "esto es lo que quiero que tenga la tabla, ahora averigüe qué declaraciones de SQL emitir para que mis deseos se hagan realidad". Esto funciona bien para cambios simples, pero el software no puede leer tu mente, y algunas veces intentará hacer las cosas de una manera más complicada para la seguridad.
Cuando esto suceda, sugiero que, en lugar de simplemente hacer clic en Aceptar, haga clic en el botón "Script" en la parte superior del cuadro de diálogo, y deje que genere las declaraciones SQL en una ventana de consulta. Luego puede editar y simplificar el código generado antes de ejecutarlo.
Hay errores en SSMS 2008 R2 (y más antiguos) que son útiles para saber:
- cuando se cambian los datos de la tabla, la representación de ерушк en SSMS se guarda automáticamente por SSMS en sus pestañas ya abiertas (ventanas): se debe presionar Ctrl + R para actualizar. Las opciones para forzar la actualización no aparecen en la GUI de SSMS: a través de botones, menús u opciones sensibles al contexto (al hacer clic con el botón derecho)
- cuando se modifica un esquema (de tabla o de base de datos), como agregar / eliminar / eliminar una columna de una tabla, SSMS no refleja estos cambios en las pestañas ya abiertas (ventanas) incluso a través de Ctrl + R, uno debe cerrar y volver a abrir las pestañas (ventanas )
Lo informé hace unos años a través de los comentarios de Microsoft Connect, pero los errores se cerraron porque está "por diseño"
Actualizar:
Esto es extraño e irritante de ver en productos de escritorio desarrollados durante 2 décadas, mientras que la mayoría de las aplicaciones web se realizan en cualquier navegador.
SQL Server (y cualquier otro RDBMS, en realidad) no tiene ninguna noción de "orden de columnas"; por ejemplo, si mueve las columnas, la única forma de lograr esa nueva estructura de tabla es emitir una nueva declaración CREATE TABLE
. No puede ordenar sus columnas de otra manera, ni debería, realmente, ya que en la teoría relacional, el orden de las columnas en una tupla es irrelevante.
Así que lo único que puede hacer SQL Server Management Studio (y lo ha hecho todo el tiempo) es:
- renombrar la mesa antigua
- cree la nueva tabla en su nuevo diseño que desea tener
- Copia los datos de la tabla anterior.
- deja caer la vieja mesa
La única forma de evitar esto es:
- no reordenar ninguna columna - solo agregue nuevas columnas al final de su tabla
- use las declaraciones SQL de
ALTER TABLE
lugar del diseñador de tablas interactivo para su trabajo
Si está más interesado en simplemente obtener SSMS para detener el fastidio, puede desmarcar la configuración "Evitar guardar los cambios que requieren la recreación de tablas" en Opciones-> Diseñadores-> Diseñadores de tablas y bases de datos. La (s) mesa (s) todavía se caerán y se volverán a crear, pero al menos el SSMS no lo molestará tanto.
(Esto supone que está trabajando en un entorno de desarrollo / prueba o en un entorno de producción en el que un breve lapso en la existencia de la tabla no arruinará nada)