Próbuję zdefiniować sposób pracy z testową bazą danych (w SQL Server) na potrzeby naszych testów integracyjnych.
Moim pomysłem było wykonanie następujących kroków podczas uruchamiania zestawu testowego integracji:
- utwórz całkowicie pustą bazę danych
- uruchom skrypt „twórz obiekty bazy danych”, aby utworzyć wszystkie odpowiednie obiekty bazy danych (tabela, widoki, sekwencje itp.)
- wypełnij „dane podstawowe” (wartości wyszukiwania itp.)
- weź migawkę bazy danych o nazwie
(db)_Basis
„linia bazowa” do przyszłych testów integracyjnych
Teraz przed każdą klasą testów (zawierającą testy 1-n) planowałem po prostu wykonać „przywracanie z migawki”, aby wrócić do dobrze zdefiniowanego, mniej lub bardziej „pustego” stanu bazy danych. Jak dotąd działa jak urok.
Istnieje jednak zestaw testów integracyjnych, które muszą działać na dużej bazie testowej - miałem więc nadzieję, że zrobię to przed każdym z tych urządzeń testowych (klasy z n pojedynczymi testami)
- przywróć bazę danych z
(db)_Basis
migawki - wstaw te 50'000 + wierszy danych do bazy danych
- utwórz kolejną
(db)_With_Testdata
migawkę
a następnie dla każdego testu zresetuj bazę danych do dobrze zdefiniowanej (db)_With_Testdata
wersji migawki, uruchom testy, sprawdź wynik i tak dalej.
Problem w tym, że nie mogę mieć dwóch migawek bazy danych jednocześnie - po wykonaniu tej czynności nie mogę przywrócić bazy danych do żadnej z nich ... Nadal pojawia się ten błąd:
Msg 3137, poziom 16, stan 4, wiersz 9
Baza danych nie może zostać przywrócona. Nazwy podstawowe lub migawki są niepoprawnie określone, wszystkie inne migawki nie zostały usunięte lub brakuje plików.Msg 3013, poziom 16, stan 1, wiersz 9
PRZYWRACANIE BAZY DANYCH kończy się nieprawidłowo.
Czy tak naprawdę działają migawki bazy danych SQL Server? Wydaje się okropnie ograniczające ..... Zrozumiałbym, gdybym nie mógł wrócić bezpośrednio do oryginalnej migawki „(db) _Basis” - ale tylko dlatego, że mam teraz dwie migawki, nie mogę nawet wrócić do najnowszej ?!?!?