2013-03-15 2 views
3

У меня есть база данных SQL Server 2008, в которой мы переходим на новый сервер. Текущая база данных содержит файл размером ~ 400 ГБ .MDF. На новом сервере будет запущен SQL Server 2012, и мы будем использовать зеркальные твердотельные накопители Intel 910. Эти диски представят нам 4 × 200 ГБ разделов.Перенос базы данных SQL Server в несколько файлов

Для выполнения этой работы нам необходимо разделить один .MDF на 4 маленьких, используя DBCC SHIRNKFILE with EMPTYFILE. Мы сделали это в тесте, и для выполнения этой задачи дольше 3,5 часов. Существующая база данных - OLTP и 365/24/7, и я знаю, что во время этого процесса будет происходить блокирование, поэтому мы не сможем сделать это сначала.

Мой вопрос: есть ли способ резервного копирования и восстановления базы данных на новый сервер во временном расположении, создавать новые файлы, EMPTY temp .MDF в новые местоположения, а затем применять журналы транзакций после? Таким образом, мы можем перемещать данные при запуске и запуске старого старого продукта, затем делать короткое завершение работы, применять журналы и выводить новую БД?

Или есть ли какие-либо другие варианты для получения от сервера A с одним файлом и сервером B с 4 файлами на разных дисках с минимальным временем простоя?

+1

Лучше спросить об этом на DBA.Stackexchange.com это эксперты –

+0

Спасибо, я добавил его там, я не понимал, что существует SQL-версия! – Lauren

ответ

1

Один думает, что вы можете сделать, если у вас есть место на диске, является:

  • Восстановление базы данных на новом сервере
  • Создать новую файловую группу
  • Создать все индексы на новом группы файлов с DROP_EXISTING=ON (и указать новый файловой группы)
  • Капля старый файл группы

Это не будет работать Ф.О. r Large Object Data, вам нужно будет переместить это вручную в новую таблицу.

Синтаксис для этого было бы что-то вроде:

CREATE CLUSTERED INDEX [index] 
ON [schema].[table]([columns) 
WITH (DROP_EXISTING = ON, ONLINE = ON) 
ON [filegroup] 

Вполне возможно, что индекс может оставаться в сети, а новое создается. Это заставит tempdb использовать больше места.

+0

Не может ли он сбросить и воссоздать кластеризованный индекс в новой файловой группе? Я делаю эти таблицы перемещения –

+0

Это то, что происходит, когда вы используете 'DROP_EXISTING'. Он уменьшает индекс, а затем восстанавливает его в указанной вами группе файлов. – JodyT

+0

Пространство не является проблемой для хранения временных файлов. Я буду играть с этим на новых серверах и посмотреть, сколько времени потребуется. На данный момент наша индексация немного сумасшедшая, и это еще одна задача, которую я имею, поэтому у меня такое чувство, что это будет медленнее сокращения, но будет изучать ее. Cheers – Lauren

Смежные вопросы