Я работаю над проектом, который предполагает использование базы данных, и я тестирую ее. Сейчас тесты создают базу данных как файл .mdf
и используют его.Как перезаписать файл .mdf
Я хочу сделать копию этого файла .mdf
где-то в другом месте и перед каждым тестом заменить исходный файл .mdf
копией, которую я только что сделал. Проблема в том, что когда я пытаюсь сделать это, он говорит, что файл используется другим процессом. Я узнал, что процесс sqlservr.exe
.
Мой вопрос: есть ли способ остановить использование сервера, чтобы я мог его заменить? Я попробовал опции SQL Server BACKUP и RESTORE, но они недостаточно хороши для меня, потому что они слишком сильно замедляют процесс.
Любая помощь будет высоко оценена.
UPDATE:
Итак, немного больше информации о проблеме. В основном я работаю над улучшением производительности своих модульных тестов. Для большинства тестов требуется подключение к базе данных, поэтому у меня есть LocalDb в файле . Этот файл создается во время TestFixtureSetup
. Затем перед каждым тестом (во время SetUp
) база данных стирается с помощью команд SQL. Кажется, это не самый эффективный способ воссоздания новой базы данных для каждого теста. Поэтому я уже пробовал два разных метода:
- Использовать команды SQL BACKUP и RESTORE. Это работает, но это увеличивает время выполнения моих тестов.
- Убийство
sqlservr.exe
процесс, локальное копирование файла и перезапускsqlservr.exe
. Это также работает, но увеличивает время выполнения.
Так что в основном я ищу предложения о том, как улучшить производительность воссоздания полностью пустой базы данных.
Остановить службу, копировать, а затем начать снова? –
https://msdn.microsoft.com/en-AU/library/ms187858.aspx Отсоединение может работать, а затем Прикрепить его –