SQL-Datenbanktest: So erfassen Sie den Status meiner Datenbank für ein Rollback

SQL-Datenbanktest: So erfassen Sie den Status meiner Datenbank für ein Rollback

Ich habe einen SQL-Server (MS SQL 2005) in meiner Entwicklungsumgebung. Ich habe eine Reihe von Unit-Tests für .net-Code, der eine Verbindung zur Datenbank herstellt und einige Vorgänge ausführt. Wenn der getestete Code ordnungsgemäß funktioniert, sollte sich die Datenbank im gleichen (oder einem ähnlichen) Zustand befinden wie vor den Tests.

Ich möchte jedoch die Datenbank auf den Zustand vor dem Testlauf zurücksetzen können. Eine Möglichkeit hierfür wäre, jeden Testvorgang programmgesteuert mithilfe von Transaktionen zurückzusetzen. Dies ist jedoch schwierig und umständlich zu programmieren und kann leicht zu Fehlern im Testcode führen.

Ich möchte meine Tests mit der Gewissheit ausführen können, dass ich sie schnell wiederherstellen kann, wenn sie meine Tabellen zerstören.

Wie kann ich einen Snapshot einer meiner Datenbanken mit ihren Tabellen speichern, sodass ich die Datenbank problemlos in den Zustand vor dem Test wiederherstellen kann?

Antwort1

Warum nicht die Sicherungs- und Wiederherstellungsroutinen von Transact-SQL verwenden?

Schauen Sie sich die Dokumentation auf MSDN anHierUndHier.

Antwort2

Wenn Sie SQL Server 2008 hatten, dann könnten Sie eineSchnappschuss, führen Sie alle Ihre Tests aus und stellen Sie dann die Datenbank mit folgendem Befehl auf den Punkt des Snapshots zurück:

 RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT

verwandte Informationen