Preámbulo
Hoy estaba modificando una columna en SQL Server 2008, cambiando el tipo de datos de algo como moneda (18,0) a (19,2).
Recibí el error "Los cambios que ha realizado requieren que se eliminen y se vuelvan a crear las siguientes tablas" de SQL Server.
Antes de luchar para responder, lea lo siguiente:
Ya sé que existe la opción en Herramientas ► Opciones ► Diseñador ► Diseñadores de tablas y bases de datos ► Desmarque la casilla "Evitar guardar cambios que requieren la recreación de la tabla". ... así que no respondas con eso!
Pregunta real
Mi pregunta real es para otra cosa, como sigue:
¿Hay algún efecto negativo / posibles inconvenientes de hacer esto?
¿La tabla se cae y se recrea automáticamente cuando esta casilla no está marcada?
Si es así, ¿la tabla copia una réplica 100% exacta de la tabla fuente?
fuente
Respuestas:
La tabla solo se descarta y se vuelve a crear en los casos en que esa es la única forma en que se ha programado Management Studio de SQL Server para saber cómo hacerlo.
Ciertamente, habrá casos en los que lo hará cuando no sea necesario, pero también habrá casos en que las ediciones que realice en Management Studio no se eliminen y se vuelvan a crear porque no es necesario.
El problema es que enumerar todos los casos y determinar en qué lado de la línea caen será bastante tedioso.
Es por eso que me gusta usar
ALTER TABLE
en una ventana de consulta, en lugar de diseñadores visuales que ocultan lo que están haciendo (y francamente tienen errores): sé exactamente lo que sucederá y puedo prepararme para los casos en que la única posibilidad es soltar y volver a crear la tabla (que es un número menor que la frecuencia con la que SSMS te hará eso).fuente
Herramientas -> Opciones -> Nodo de diseñadores -> Desmarque " Evitar guardar cambios que requieren recreación de tabla ".
fuente
Referencia : desactivar esta opción puede ayudarlo a evitar volver a crear una tabla, también puede provocar la pérdida de cambios. Por ejemplo, suponga que habilita la función de seguimiento de cambios en SQL Server 2008 para realizar un seguimiento de los cambios en la tabla. Cuando realiza una operación que hace que la tabla se vuelva a crear, recibirá el mensaje de error que se menciona en la sección "Síntomas". Sin embargo, si desactiva esta opción, la información de seguimiento de cambios existente se elimina cuando se vuelve a crear la tabla. Por lo tanto, Microsoft recomienda que no solucione este problema desactivando la opción.
fuente
SQL Server descarta y recrea las tablas solo si usted:
Usar ALTER es más seguro, ya que en caso de que los metadatos se pierdan mientras vuelve a crear la tabla, sus datos se perderán.
fuente
IDENTITY
propiedad en una columna, por ejemplo.Sí, hay efectos negativos de esto:
Si escribe un cambio bloqueado por este indicador, obtendrá algo como el siguiente script (todo lo que estoy haciendo es convertir la columna de ID en Contacto en una columna de IDENTIDAD autonumerada, pero la tabla tiene dependencias). Tenga en cuenta los posibles errores que pueden ocurrir mientras se ejecuta lo siguiente:
-
fuente