Назад | Перейти на главную страницу

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

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

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

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

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

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

Взгляните на документацию на MSDN Вот и Вот.

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

 RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT