В моей среде разработки есть SQL-сервер (MS SQL 2005). У меня есть набор модульных тестов для некоторого кода .net, который будет подключаться к базе данных и выполнять некоторые операции. Если тестируемый код работает правильно, то база данных должна быть в том же (или аналогичном) состоянии, в каком она была до тестов.
Однако я хотел бы иметь возможность откатить базу данных до ее состояния до запуска тестов. Один из способов сделать это - программно использовать транзакции для отката каждой тестовой операции, но это сложно и обременительно программировать; это могло легко привести к ошибкам в тестовом коде.
Я хотел бы иметь возможность запускать свои тесты с уверенностью, зная, что если они уничтожат мои таблицы, я могу быстро их восстановить?
Как лучше всего сохранить снимок одной из моих баз данных с ее таблицами, чтобы я мог легко восстановить базу данных до ее состояния, которое было до теста?
Почему бы не использовать процедуры резервного копирования и восстановления Transact-SQL?
если у вас был sql server 2008, вы могли бы взять снимок, запустите все ваши тесты, а затем восстановите базу данных до точки моментального снимка с помощью:
RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT