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