6

Tengo un proyecto de base de datos para una aplicación web, y actualmente lo configuro para que falle si se pueden perder datos durante la implementación. Me siento más seguro de esta manera. Sin embargo, me he encontrado con un problema. De hecho, necesito implementar cambios en algunos aspectos en los que estoy de acuerdo con la posible pérdida de datos, es decir, acortar las longitudes de las columnas donde en realidad no se eliminaría nada, pero el sistema cree que sí.VS2010 Implementación de proyecto de base de datos, ¿fallará si se produce una pérdida de datos o no?

Tengo 2 preguntas.

El primero es esto: aparte de habilitar o deshabilitar el catch all go o no go, ¿hay alguna forma de tener un control más granular sobre este proceso, es decir, especificar columnas que está bien soltar o acortar? ¿Hay alguna forma de obtener un control más granular de este proceso?

La segunda es, ¿cómo manejan estas situaciones? Inicialmente, esperaba que agregar un guión previo a la implementación para eliminar las columnas fuera suficiente, sin embargo, parece captar gotas, etc. en esos archivos también.

+0

No es que el motor de implementación analiza los scripts de pre-despliegue y "coge gotas", el problema es que la comparación de esquemas se ejecuta antes del script de despliegue previo, por lo que el script de despliegue generado incluye una verificación y un error de revisión si la tabla contiene filas. Puede ver esto si abre el script SQL generado. –

Respuesta

2
  1. Desafortunadamente, no hay forma de controlarlo de forma más detallada.
  2. Lo deshabilito cuando sé que voy a implementar algo que causará la pérdida de datos, pero es lo que quiero. Luego lo vuelvo a habilitar después. Además, siempre verificaba el script de cambio que aparece cuando se implementa en producción.
+0

¿Cómo lo deshabilita? –

0

¿Acaba de actualizar la columna en una secuencia de comandos previa a la implementación para la longitud truncada?

Por ejemplo: para truncar mi col a 20:

UPDATE mycol = LEFT(mycol, 20) 
FROM mytable 
WHERE mycol != LEFT(mycol, 20) 
+0

El problema que puede tener con este enfoque es que la comparación de esquemas se ejecuta antes de la secuencia de comandos previa a la implementación, por lo que la secuencia de comandos de lanzamiento aún puede incluir una comprobación y un error de revisión si la tabla contiene filas. –

0

La orientación Microsoft es mover los datos a cabo en una tabla temporal en pre-despliegue, dejar que el motor de implementación ejecuta una comprobación para ver si la tabla contiene filas (esto pasará porque ahora está vacío) y actualiza el esquema, y ​​mueve los datos nuevamente en una secuencia de comandos posterior a la implementación.

Para obtener más información, consulte los mensajes Barclay Hills sobre el tema:

Cuestiones relacionadas