SSMS: No se permite guardar los cambios

Igual el post actual causa algún tipo de controversia entre los DBA, y no existe nada más lejos de mi intención. Para un desarrollador como yo, si intentas hacer un cambio en una tabla de SQL Server (actualmente estoy con la versión 2008 R2) y el entorno te da un problema diciendo que no puedes hacerlo, realmente es un fastidio.

Jesús, ¿de qué estás hablando?. Pues realmente es algo que es muy sencillo, pero que es bastante molesto cuando intentas evitarte problemas a la hora de desarrollar. Pongamos un ejemplo, que así seguro que se entiende mucho mejor.

Tenemos que crear una tabla, por ejemplo, de Categorías. Como tan sólo se trata de crear la base de datos en local para simular el entorno de producción, hacemos uso del SSMS. Como es normal en un desarrollador despistado, la tabla resultante es algo similar a lo siguiente:

image

¿Qué ha pasado?. Algo muy sencillo. Al ser una tabla auxiliar, no he configurado el campo clave de la tabla como IDENTITY, así que, usando también el SSMS me dispongo a modificar la propiedad Especificación de identidad y cuál no será mi sorpresa al ver el siguiente mensaje:

image

Vale… ahora casi empiezo a acordarme que mi profe de BBDD nos comentaba que, a nivel interno, cuando se modificaba un campo se eliminaba éste y se volvía a crear. Vuelvo a repetir, si algún DBA me lleva la contraria, seguro que tiene razón, pero yo lo entendí más o menos así. De todas maneras, tenga razón o no, para mí es un fastidio tener que echar mano del SQL para crear un nuevo campo, traspasar los datos y convertir el nuevo campo en PK eliminando la PK actual… Ufff. Si tan sólo estamos hablando de un entorno de desarrollo…

Resulta que el problema del mensajito no es de SQL sino del SMSS, que tiene una prevención de cambios que supongo que será muy lógica en entornos de producción pero bastante molesta para nosotros, los desarrolladores. En la versión 2008 (es la que utilizo, no sé el resto) existe una opción en Herramientas, Opciones, Diseñadores que, por defecto viene activada y que nos impide realizar ciertos cambios en las tablas. Bastará con desmarcar la opción Impedir guardar cambios que requieran volver a crear tablas para que podamos, por ejemplo, convertir un campo “despistado” a un campo IDENTITY.

image