No se permite guardar cambios en el mensaje de error de SSMS

Este artículo le ayuda a solucionar el problema en el que recibe un mensaje de error cuando intenta guardar una tabla en SQL Server Management Studio (SSMS).

Versión del producto original:   SQL Server
Número de KB original:   956176

Síntomas

Cuando intenta guardar una tabla después de realizar cambios en la tabla con el diseñador de SQL Server Management Studio, puede recibir el siguiente mensaje de error:

No se permite guardar cambios. Los cambios que ha realizado requieren que se coloquen y vuelvan a crear las siguientes tablas. Se realizaron cambios en una tabla que no se pueden volver a crear o se habilitó la opción evitar que se guarden los cambios que requieran volver a crear la tabla.

Este problema se produce cuando realiza uno o varios de los siguientes cambios en la tabla:

  • Puede cambiar la configuración de permitir valores nulos para una columna.
  • Reordena las columnas de la tabla.
  • Se cambia el tipo de datos de la columna.
  • Agrega una columna nueva.
  • Se cambia la filegroup de una tabla o de sus text/image datos.

Causa

Este problema se produce porque la opción evitar que se guarden los cambios que requieran la opción de volver a crear tablas   está habilitada de forma predeterminada en SQL Server Management Studio.

Cuando se cambia una tabla para modificar la estructura de los metadatos de la tabla y, a continuación, se guarda la tabla, la tabla se debe volver a crear basándose en estos cambios. Esto puede dar como resultado la pérdida de metadatos y la pérdida directa de datos durante la nueva creación de la tabla. Si habilita la opción evitar que se guarden cambios que requieran la recreación de tablas en la sección del Diseñador de la ventana Opciones de SQL Server Management Studio (SSMS) , recibirá el mensaje de error mencionado en la sección "síntomas".

Solución alternativa

Para solucionar este problema, use ALTER TABLE instrucciones Transact-SQL para realizar los cambios en la estructura de metadatos de una tabla.

Por ejemplo, para cambiar la columna codate de tipo DateTime en la tabla denominada MyTable para que acepte valores nulos, puede usar:

alter table MyTable alter column MyDate7 datetime NULL

Importante

Se recomienda encarecidamente no solucionar este problema desactivando la opción impedir que se guarden los cambios que requieran una nueva creación de tablas. Para obtener más información acerca de los riesgos de desactivar esta opción, consulte la sección "más información".

Más información

Para cambiar la opción evitar que se guarden los cambios que requieran la recreación de tablas , siga estos pasos:

  1. Abra SQL Server Management Studio.

  2. En el menú Herramientas, haga clic en Opciones.

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

  4. Active o desactive la casilla impedir que se guarden los cambios que requieran la nueva creación de tablas y, a continuación, haga clic en Aceptar.

Nota

Si deshabilita esta opción, no se le advertirá al guardar la tabla que los cambios realizados han cambiado la estructura de metadatos de la tabla. En este caso, es posible que se pierdan datos al guardar la tabla.

Riesgo de desactivar la opción "impedir que se guarden los cambios que requieran volver a crear una tabla"

Aunque desactivar esta opción puede ayudarle a evitar que vuelva a crear una tabla, también puede llevar a que se pierdan los cambios. Por ejemplo, suponga que habilita la característica de seguimiento de cambios de SQL Server para realizar un seguimiento de los cambios realizados en la tabla. Cuando realiza una operación que hace que se vuelva a crear la tabla, recibe el mensaje de error que se menciona en la sección síntomas . Sin embargo, si desactiva esta opción, se eliminará la información de seguimiento de cambios existente cuando se vuelva a crear la tabla. Por lo tanto, se recomienda no solucionar este problema desactivando la opción.

Para determinar si la característica de seguimiento de cambios está habilitada para una tabla, siga estos pasos:

  1. En SQL Server Management Studio, busque la tabla en el explorador de objetos.
  2. Haga clic con el botón secundario en la tabla y, a continuación, haga clic en propiedades.
  3. En el cuadro de diálogo Propiedades de tabla, haga clic en seguimiento de cambios. Si el valor del elemento de seguimiento de cambios es true, esta opción está habilitada para la tabla. Si el valor es false, esta opción está deshabilitada.

Cuando la Change Tracking característica está habilitada, use instrucciones Transact-SQL para cambiar la estructura de los metadatos de la tabla.

Pasos para reproducir el problema

  1. En SQL Server Management Studio, cree una tabla que contenga una clave principal en la herramienta diseñador de tablas.
  2. Haga clic con el botón secundario en la base de datos que contiene esta tabla y haga clic en propiedades.
  3. En el cuadro de diálogo Propiedades de la base de datos , haga clic en seguimiento de cambios.
  4. Establezca el valor del elemento de seguimiento de cambios en true y, a continuación, haga clic en Aceptar.
  5. Haga clic con el botón secundario en la tabla y, a continuación, haga clic en propiedades.
  6. En el cuadro de diálogo propiedades de tabla , haga clic en seguimiento de cambios.
  7. Establezca el valor del elemento de seguimiento de cambios en true y, a continuación, haga clic en Aceptar.
  8. En el menú Herramientas, haga clic en Opciones.
  9. En el cuadro de diálogo Opciones , haga clic en diseñadores.
  10. Haga clic para activar la casilla impedir que se guarden los cambios que requieran una nueva creación de tablas y, a continuación, haga clic en Aceptar.
  11. En la herramienta diseñador de tablas, cambie la configuración permitir valores nulos en una columna existente.
  12. Intente guardar el cambio en la tabla.