Тестирование базы данных SQL: как зафиксировать состояние моей базы данных для отката

Тестирование базы данных SQL: как зафиксировать состояние моей базы данных для отката

В моей среде разработки есть SQL-сервер (MS SQL 2005). У меня есть набор модульных тестов для некоторого кода .net, который будет подключаться к базе данных и выполнять некоторые операции. Если тестируемый код работает правильно, то база данных должна быть в том же (или похожем) состоянии, в котором она была до тестов.

Однако я хотел бы иметь возможность откатить базу данных к ее состоянию до запуска тестов. Один из способов сделать это — программно использовать транзакции для отката каждой тестовой операции, но это сложно и обременительно для программирования; это может легко привести к ошибкам в тестовом коде.

Хотелось бы мне иметь возможность проводить тесты уверенно, зная, что если они уничтожат мои таблицы, я смогу их быстро восстановить?

Как лучше всего сохранить снимок одной из моих баз данных с ее таблицами, чтобы можно было легко восстановить базу данных до состояния, существовавшего до начала теста?

решение1

Почему бы не использовать процедуры резервного копирования и восстановления Transact-SQL?

Ознакомьтесь с документацией на MSDN.здесьиздесь.

решение2

если у вас был SQL Server 2008, то вы могли бы взятьснимок, запустите все тесты, а затем восстановите базу данных до точки снимка с помощью:

 RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT

Связанный контент