Восстановление базы данных SQL Server для быстрого тестирования - PullRequest
0 голосов
/ 11 октября 2019

У меня большая база данных, восстановление которой из файла bak занимает несколько минут. Мне нужно выполнить несколько тестов с помощью веб-приложения, а затем отменить все эти изменения для повторения тестов. Это рабочий процесс, который я сейчас выполняю, и мой вопрос в том, есть ли лучший / менее затратный по времени метод.

  1. Восстановление базы данных из файла bak (файл bak ~ 5 ГБ и занимает около 1 минуты)
  2. Выполните тестирование с помощью веб-приложения.
  3. Удалите базу данных и восстановите ее заново из файла bak (шаг 1)

Параметр восстановления базы данныхЭто заняло много времени, я думал, смогу ли я использовать что-то вроде CHECKPOINTS или какую-то другую функцию, когда мне не нужно восстанавливать полную резервную копию снова.

Редактировать : Я хотел бы знать, существуют ли решения, в которых мы можем сократить время восстановления, используя встроенную функцию sql-сервера. Представьте себе, если восстановление занимает 5 минут, - 5 минут - это длительное время или короткое время относительно каждого пользователя и каждого варианта использования.

1 Ответ

3 голосов
/ 11 октября 2019

Во-первых, «У меня огромная база данных со всеми данными, с которыми я запускаю несколько тестов и возвращаюсь после каждого теста», в конечном счете, это не очень хорошая модель в моем опыте - все еще остается вопроссначала получить эту огромную базу данных (вы не хотите использовать production , не так ли?), возможные проблемы с людьми, которым не разрешают просматривать данные, проблемы параллелизма, если экземпляр используется совместно, ибольшинство чертовски хрупких тестов, которые основаны на конкретных данных. Отведите взгляд на две недели, и вы обнаружите, что ваши тесты больше не работают, и люди не могут сказать, почему.

Лучшее долгосрочное решение - создать минимальный проект базы данных, используя SSDT , которыйслужит чем-то, что вы можете проверить в системе контроля версий для загрузки. Разверните как LocalDB, вставьте только данные, необходимые для вашего теста, протестируйте, а затем отбросьте его. Никаких зависимостей, никаких скрытых предположений.

Сказав это, SQL Server предлагает моментальные снимки базы данных , созданные с помощью CREATE DATABASE ... AS SNAPSHOT OF и возвращенные с помощью RESTORE DATABASE ... FROM SNAPSHOT = .... Поскольку это включает только удаление измененных данных, это может быть намного быстрее, чем полное восстановление. Это все еще неизбежно страдает от проблем параллелизма, если несколько человек хотят запускать тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...