Мой друг предложил, чтобы я использовал KillCopy с этой целью. Это работает хорошо - его пользовательский интерфейс является немного неуклюжим, но это - решение для перетаскивания (предполагающий использование места назначения, к которому можно получить доступ в Проводнике).
Никакой способ оценить, сколько времени это возьмет - столько разных вещей, оказал бы влияние. Подобный тому, что Paul пишет о длине CHECKDB, очень похожие вещи сыграли бы роль с индексацией и т.д. Лучший ответ был бы то, сколько времени он взял в прошлом? Если бы Вы не можете решить, что, следующий наилучший вариант состоял бы в том, чтобы, вероятно, попробовать его на подобной непродуктивной среде, но даже который будет не обязательно соответствовать (т.е. проблемы параллелизма, и т.д. отличалось бы).
Как примечание стороны, можно хотеть изучить ИНДЕКСНЫЕ ОПЕРАЦИИ ОНЛАЙН в Sql 2005 и выше... Я не могу добавить, что вторая гиперссылка, но Google "онлайн индексирует операционный SQL-сервер" и нажимает на главную ссылку.
Вы на самом деле проверили, насколько фрагментированный Ваши таблицы / индексы? Попытайтесь выполнить следующий запрос против базы данных (запрос работает на SQL2005 или выше). Обратите внимание, что этот запрос повлияет на Ваш сервер и должен быть выполнен в спокойное время:
SELECT OBJECT_NAME(i.OBJECT_ID) AS TableName,
i.name AS IndexName,
indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') indexstats
INNER JOIN sys.indexes i ON i.OBJECT_ID = indexstats.OBJECT_ID
AND i.index_id = indexstats.index_id
Можно выборочно повторно индексировать таблицы/индексы, которые больше всего фрагментируются.
Любая операция базы данных является высоко иждивенцем на аппаратных средствах, Вы работаете на нем.
Так как Вы уже говорите включение очень большой суммы строк это не должна быть проблема для выполнения его в течение часов неполной нагрузки.
Вы могли настроить репликацию и предложить ту базу данных Вашим клиентам, в то время как Вы очищаете старый и устанавливаете его в только для чтения, таким образом, они могут все еще получить любые данные, в которых они, возможно, нуждались бы.
После того как Вы восстановили таблицу первоначально, Вы захотите настроить задания обслуживания для периодического дефрагментирования/восстанавливания индексов. У Michelle Ufford иначе @SQLFool есть превосходный набор сценариев для этого:
http://sqlfool.com/2009/06/index-defrag-script-v30/
Вы устанавливаете пороги того, когда Вы хотите дефрагментироваться по сравнению с, восстанавливают. Это автоматически обнаруживает, какие индексы это может восстановить онлайн и делает это также, принося Вам некоторую пользу времени работы.
Знайте, что индексные операции могут бросить тонну действия в журнал транзакций, который может действительно замедлить зеркальное отражение базы данных и резервные копирования журнала транзакций.