LightSwitch: Replicando Cambios de Base Datos a Windows Azure - ERROR: Incorrect syntax near 'MULTI_USER'

Este vago, vaguísimo error, que se presenta cuando desplegamos una solución de LightSwitch a la nube, es totalmente aterrador y deja inusable nuestra solución.

image

Después de experimentar bastante, detecté que sucede cuando hago cambios a la estructura física de la base de datos en desarrollo, sobre objetos ya existentes en el despliegue anterior. Por ejemplo eliminar una columna de una tabla, quitar una relación, cambiar nombres de columnas, etc. Etc.

En general, cuando se habla de eliminación o actualización de elementos físicos de la DB de LightSwitch en Azure (que obviamente es una SQL Azure), puede ocurrir que el asistente de despliegue no logre hacer esas modificaciones a la DB, y termine arrojando ese abstracto error con el que arranqué el post.

Es por esto que cuando estemos haciendo desarrollo de mejora continua sobre nuestra solución de LightSwitch, es necesario estar muy pero muy pendiente de cuándo hacemos este tipo de cambios sobre la solución. Recomiendo anotarlos muy detalladamente. Pues si el despliegue falla con el error que les he mencionado, tendremos que usar esa lista para reproducir exactamente los cambios físicos de la DB en producción.

No habrá otra alternativa que ejecutar estos cambios manualmente y realizarlos con tanto cuidado, que reflejen exactamente lo que se cambió en desarrollo muy probablemente de manera visual a través de los Wizards y Designers de LightSwitch.

Esto no ocurre siempre. Si por ejemplo los cambios incluyeron la adición de una nueva tabla o una nueva relación, en general esto no presenta problemas. La adición es manejada con más efectividad. Sin embargo siempre es bueno llevar un log de los cambios físicos de la base de datos, por si algún cambio no es realizado correctamente en producción, poder ir a ejecutarlo manualmente.

Una vez ejecutamos esos cambios y dejamos la DB en el estado esperado, el deployment funcionará correctamente y podremos volver a respirar tranquilos.