Estoy tratando de definir una forma de trabajar con una base de datos de prueba (en SQL Server) para nuestras pruebas de integración.
Mi idea era seguir estos pasos en el lanzamiento del ensamblaje de prueba de integración:
- crear una base de datos totalmente vacía
- ejecute el script "crear objetos de base de datos" para crear todos los objetos de base de datos relevantes (tabla, vistas, secuencias, etc.)
- rellene los "datos base" (valores de búsqueda, etc.)
- tomar una instantánea de la base de datos llamada
(db)_Basis
como "línea base" para futuras pruebas de integración
Ahora, antes de cada clase de prueba (que contiene pruebas 1-n), estaba planeando simplemente hacer una "restauración desde la instantánea" para volver al estado bien definido, más o menos "vacío" de la base de datos. Funciona como un encanto hasta ahora.
Sin embargo, hay un conjunto de pruebas de integración que deben operar en una base de datos de prueba grande, por lo que esperaba hacer esto antes de cada uno de esos dispositivos de prueba (clases con n pruebas individuales)
- restaurar la base de datos desde la
(db)_Basis
instantánea - inserte esas 50,000 filas de datos en la base de datos
- crear otra instantánea
(db)_With_Testdata
instantánea
y luego, para cada prueba, restablezca la base de datos a la (db)_With_Testdata
versión de instantánea bien definida , ejecute las pruebas, verifique el resultado, etc.
El problema es que parece que no puedo tener dos instantáneas db al mismo tiempo; una vez que lo hago, no puedo restaurar mi base de datos en ninguno de ellos ... Continúo recibiendo este error:
Msg 3137, Nivel 16, Estado 4, Línea 9 La
base de datos no se puede revertir. El nombre principal o el nombre de la instantánea no se especifica correctamente, el resto de las instantáneas no se han eliminado o faltan archivos.El mensaje 3013, Nivel 16, Estado 1, Línea 9
RESTAURAR BASE DE DATOS está finalizando de manera anormal.
¿Es realmente así como funcionan las instantáneas de la base de datos de SQL Server? Parece terriblemente restrictivo ... Lo entendería si no pudiera volver directamente a la instantánea original "(db) _Basis" tal vez, pero solo porque ahora tengo dos instantáneas, ni siquiera puedo volver a la más reciente ?!?!?