Во-первых, «У меня огромная база данных со всеми данными, с которыми я запускаю несколько тестов и возвращаюсь после каждого теста», в конечном счете, это не очень хорошая модель в моем опыте - все еще остается вопроссначала получить эту огромную базу данных (вы не хотите использовать production , не так ли?), возможные проблемы с людьми, которым не разрешают просматривать данные, проблемы параллелизма, если экземпляр используется совместно, ибольшинство чертовски хрупких тестов, которые основаны на конкретных данных. Отведите взгляд на две недели, и вы обнаружите, что ваши тесты больше не работают, и люди не могут сказать, почему.
Лучшее долгосрочное решение - создать минимальный проект базы данных, используя SSDT , которыйслужит чем-то, что вы можете проверить в системе контроля версий для загрузки. Разверните как LocalDB, вставьте только данные, необходимые для вашего теста, протестируйте, а затем отбросьте его. Никаких зависимостей, никаких скрытых предположений.
Сказав это, SQL Server предлагает моментальные снимки базы данных , созданные с помощью CREATE DATABASE ... AS SNAPSHOT OF
и возвращенные с помощью RESTORE DATABASE ... FROM SNAPSHOT = ...
. Поскольку это включает только удаление измененных данных, это может быть намного быстрее, чем полное восстановление. Это все еще неизбежно страдает от проблем параллелизма, если несколько человек хотят запускать тесты.