Error de "Guardar cambios no está permitido" del servidor SQL ► Evite guardar cambios que requieren la recreación de la tabla

749

Cuando creo una tabla en SQL Server y la guardo, si intento editar el diseño de la tabla, como cambiar un tipo de columna de int a real, obtengo este error:

Guardar cambios no está permitido. El cambio que ha realizado requiere que la siguiente tabla se descarte y se vuelva a crear. Ha realizado cambios en una tabla que no se puede volver a crear o ha habilitado la opción para evitar guardar los cambios que requieren que se vuelva a crear la tabla.

¿Por qué tengo que volver a crear la tabla? Solo quiero cambiar un tipo de datos de smallinta real.

La mesa está vacía, y no la usé hasta ahora.

Arash
fuente

Respuestas:

1466

Desde el cuadro de diálogo Guardar (no permitido) en MSDN :

El cuadro de diálogo Guardar (no permitido) le advierte que no se permite guardar cambios porque los cambios que ha realizado requieren que las tablas enumeradas se descarten y se vuelvan a crear.

Las siguientes acciones pueden requerir que se vuelva a crear una tabla:

  • Agregar una nueva columna al centro de la tabla
  • Soltar una columna
  • Cambio de nulabilidad de columna
  • Cambiar el orden de las columnas
  • Cambiar el tipo de datos de una columna <<<<

Para cambiar esta opción, en el menú Herramientas , haga clic en Opciones , expanda Diseñadores y luego haga clic en Diseñadores de tablas y bases de datos . Seleccione o desactive la casilla de verificación Evitar guardar cambios que requieren que la tabla se vuelva a crear .

Consulte también la entrada del blog Colt Kwong:
guardar cambios no está permitido en SQL 2008 Management Studio

Robert Harvey
fuente
77
SSMS no debería permitirte hacer algo inseguro sin avisarte primero. Pero tenga una copia de seguridad a mano, por si acaso.
Robert Harvey
40
Esta opción le dice a SSMS que puede continuar y crear una tabla temporal en un nuevo esquema, copiar datos en esta, luego eliminar la tabla anterior y cambiar el nombre de la tabla temporal al nombre original. Todo bien para hacer lo que debería ser en la transacción, sin embargo, las relaciones se romperán y se recrearán, por lo que si no es 100%, podría hacer algo inesperado.
Justin King
13
No sé por qué no puedo recordar esos simples pasos para desplegar esta opción y siempre tengo que buscar la solución. Jejejejeje. ¡Gracias hombre!
Desarrollador
8
Santa vaca: ¿puedes apagar esto para superar este error? No lo sabía, y durante los últimos 3 años he vivido con el miedo de diseñar una tabla sin una especificación de identidad y tener que crear una nueva tabla. Gran consejo!
nocarrier
44
Aquí está CAVEAT de Microsoft para deshabilitar la opción 'Prevenir guardar cambios ...': support.microsoft.com/en-us/kb/956176 . Básicamente, puede perder metadatos como Change Tracking, si esa es una característica que usa.
Baodad
205

¿Usas SSMS?

En caso afirmativo, vaya al menú Herramientas >> Opciones >> Diseñadores y desmarque "Evitar guardar cambios que requieren la recreación de la tabla"

ypercubeᵀᴹ
fuente
Herramientas >> Opciones, etc., no "Menú" (solo desde el punto de vista de ssms 2014, que creo que es el mismo en versiones anteriores)
Tom Stickel
@TomStickel Supongo que quise decir ir al menú: "Herramientas"
ypercubeᵀᴹ
: P Sí, me imaginé eso, solo pensé que haría un comentario para cualquier persona que realmente se "atascara", da miedo, lo sé, pero supongo que algunas personas podrían levantar las manos rápidamente ... gracias
Tom Stickel
2
@NeilMeyer tenga cuidado de que la casilla de verificación esté marcada allí por algún motivo. Es una medida de seguridad para evitar operaciones que eliminar y reconstruir una mesa (y por lo tanto la pérdida de todos sus datos Por lo tanto, el uso con precaución!
ypercubeᵀᴹ
¿se perderán las relaciones entre las tablas si las tablas se vuelven a crear así?
Neil Meyer
78

Evite guardar cambios que requieren la recreación de la tabla

Cinco clics rápidos

Evite guardar cambios que requieren la recreación de la tabla en cinco clics

  1. Herramientas
  2. Opciones
  3. Diseñadores
  4. Evite guardar cambios que requieren la recreación de la tabla
  5. Aceptar .

Después de guardar, repita el procedimiento para volver a marcar la casilla. Esto protege contra la pérdida accidental de datos.

Explicación adicional

  • De manera predeterminada, SQL Server Management Studio evita la caída de tablas, porque cuando se cae una tabla, se pierde su contenido de datos.

  • Al modificar el tipo de datos de una columna en la vista Diseño de la tabla, al guardar los cambios, la base de datos descarta la tabla internamente y luego vuelve a crear una nueva.

* Sus circunstancias específicas no supondrán una consecuencia ya que su mesa está vacía. Proporciono esta explicación por completo para mejorar su comprensión del procedimiento.

WonderWorker
fuente
27

Para cambiar la opción Evitar guardar cambios que requieren la opción de recreación de la tabla, siga estos pasos:

Abra SQL Server Management Studio (SSMS). En el menú Herramientas, haga clic en Opciones.

En el panel de navegación de la ventana Opciones, haga clic en Diseñadores.

Seleccione o desactive la casilla de verificación Prevenir guardar cambios que requieren la recreación de la tabla y luego haga clic en Aceptar.

Nota : Si deshabilita esta opción, no se le advierte cuando guarda la tabla que los cambios que realizó han cambiado la estructura de metadatos de la tabla. En este caso, la pérdida de datos puede ocurrir cuando guarda la tabla.

ingrese la descripción de la imagen aquí

Tabish Usman
fuente
El diseñador de mesas es útil, pero no puedes lograrlo todo con él
Sitecore Sam
22

Es un problema de configuración muy fácil y sencillo que se puede solucionar en 5 segundos siguiendo estos pasos

Para permitirle guardar los cambios después de modificar la tabla, siga estos pasos para su configuración sql:

  1. Abra Microsoft SQL Server Management Studio 2008
  2. Haga clic en las opciones del menú Herramientas, luego haga clic en Opciones
  3. Seleccionar diseñadores
  4. Desmarque la opción "evitar guardar cambios que requieren la recreación de la tabla"
  5. Haga clic en Aceptar
  6. Intenta alterar tu mesa
  7. Sus cambios se realizarán según lo deseado
Rizwan Gill
fuente
8
¿Cómo se agrega esto a la respuesta aceptada de alguna manera?
Inmortal Blue
17

Vaya a la herramienta ubicada en el menú superior.
Elija opciones del menú desplegable. Ahora tiene una ventana emergente, seleccione la opción Diseñadores ubicada en el bloque izquierdo de menús. Desmarque la opción Evitar guardar cambios que requieren la recreación de la tabla . Haga clic en el botón Aceptar.

FIFO BIZSOL
fuente
12

Desmarca la Prevent saving changes that require table re-creationcasilla de Herramientas ► Opciones ► pestaña Diseñadores .

Ejemplo de SQL Server 2012:

ingrese la descripción de la imagen aquí

pedram
fuente
12

Esto se puede cambiar fácilmente en Microsoft SQL Server .

  1. Abra Microsoft SQL Server Management Studio 2008
  2. Haga clic en el menú Herramientas
  3. Haga clic en Opciones
  4. Seleccionar diseñadores
  5. Desmarque "Evitar guardar cambios que requieren la recreación de la tabla"
  6. Haga clic en Aceptar

ingrese la descripción de la imagen aquí

Irshad Ahmed Akhonzada
fuente
7

Copiado de este enlace "... Importante Recomendamos encarecidamente que no solucione este problema desactivando la opción Evitar guardar cambios que requieren la recreación de la tabla. Para obtener más información sobre los riesgos de desactivar esta opción, consulte el" Más información "sección".

"... Para solucionar este problema, use las instrucciones Transact-SQL para realizar los cambios en la estructura de metadatos de una tabla. Para obtener información adicional, consulte el siguiente tema en Libros pantalla SQL Server

Por ejemplo, para cambiar la columna MyDate de tipo datetime en una tabla llamada MyTable para aceptar valores NULL, puede usar:

alter table MyTable alter column MyDate7 datetime NULL "

Panagiotis
fuente
2
Con tantas respuestas todas diciendo lo mismo, esta era la respuesta que estaba buscando ya que tenía datos en vivo en mi tabla que no quería perder. ¡Necesitaba actualizar una columna decimal de 0 lugares decimales a 2 lugares decimales y la simple declaración alter funcionó perfectamente!
Stitz
La tragedia aquí es que SSMS debería estar haciendo exactamente esto bajo el capó y, por lo tanto, no requiere dejar caer la mesa
M12lrpv
6

Y en caso de que alguien aquí tampoco esté prestando atención (como yo):

Para Microsoft SQL Server 2012, en el cuadro de diálogo de opciones, hay una pequeña casilla de verificación disimulada que aparentemente oculta todas las demás configuraciones. ¡Aunque tengo que decir que he extrañado a ese pequeño monstruo todo este tiempo!

Después de eso, puede continuar con los pasos, diseñador, desmarque evitar guardar bla bla bla ...

sneaky_check_box_in_option

Gellie Ann
fuente
5

Herramientas >> Opciones >> Diseñadores y desmarque "Evitar guardar cambios que requieren la recreación de la tabla":

Descripción en formato de fotos

سیدرسول میرعظیمی
fuente
2

1) Abra la herramienta que está en la parte superior.
2) Elija las opciones de la lista de selección.
3) Ahora viene la ventana emergente y ahora puede seleccionar la opción de diseñadores de la lista de menús en el lado izquierdo.
4) Ahora evite guardar los cambios que se deben desmarcar que necesitaban volver a crear la tabla. Ahora haga clic en Aceptar.

Rishabh Seth
fuente
1

En el menú Herramientas, haga clic en Opciones, seleccione Diseñadores en el menú lateral y desmarque para evitar cambios que puedan conducir a la recreación de una tabla. Luego guarda los cambios

Ogbonna Vitalis
fuente
0

Si no puede ver "Evitar guardar cambios que requirieron la recreación de la tabla" en una lista como esa La imagen

Debe habilitar el seguimiento de cambios.

  • Haga clic derecho en su base de datos y haga clic en Propiedades
  • Haga clic en seguimiento de cambios y habilítelo
  • Vaya a Herramientas -> Opciones -> Diseñador nuevamente y desactívelo.
Emre Karataşoğlu
fuente
0

Si usa sql server Management studio, vaya a Herramientas >> Opciones >> Diseñadores y desmarque "Evitar guardar cambios que requieren la recreación de la tabla". Funciona conmigo

Taher Chtaywi
fuente