Перемещение SQL Server 2008 R2 для резервного копирования / восстановления для отсоединения / повторного подключения - PullRequest
1 голос
/ 26 апреля 2011

Я работаю над обновлением фреймворка для тестирования кода, управляемого базой данных. Перед каждым тестом записи в базу данных выполняется RESTORE резервного копирования базы данных, который занимает 15-20 секунд, поэтому я пытаюсь ускорить его, сохраняя «резервную копию» отдельного mdf, ldf и ndf файлы, чтобы я мог просто СОЗДАТЬ БАЗУ ДАННЫХ ... ДЛЯ ПРИЛОЖЕНИЯ перед каждым тестом. Проблема в том, что при использовании RESTORE вы можете «переместить» (или, более конкретно, выбрать, куда восстановить резервную копию) файлы mdf, ldf и ndf примерно так:

RESTORE DATABASE [testDB]
  FROM DISK = N'\\Path\To\Backup' WITH FILE = 1, RECOVERY,
  MOVE N'testDB' TO N'\\Path\To\MDF', 
  MOVE N'testDB_log' TO N'\\Path\To\LDF', 
  MOVE N'ftrow_testDB' TO N'\\Path\To\NDF', 
  NOUNLOAD, REPLACE, STATS = 1

Однако, с CREATE DATABASE FOR ATTACH, я не могу найти какой-либо способ "переместить" файлы mdf, ldf и ndf. Когда вы присоединяете, он просто использует файлы, которые вы указали в качестве файлов базы данных:

CREATE DATABASE [testDB] ON
  (FILENAME = N'\\Path\To\MDF'),
  (FILENAME = N'\\Path\To\LDF'),
  (FILENAME = N'\\Path\To\NDF')
FOR ATTACH

Это означает, что для хранения «резервной копии» этих трех файлов мне потребуется каждый раз копировать их из каталога резервных копий, что отнимает много времени и более чем сводит на нет любое увеличение скорости.

У кого-нибудь есть идеи, как заставить его работать?

1 Ответ

0 голосов
/ 26 мая 2011

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

...