Я копирую базы данных из SQL 2000 в экземпляр 2008 на другом сервере с помощью DETACH, копирую файл Windows на сервер 2008, затем, наконец, ATTACH. Я пришел к базе данных, где файл LOG находится в 2 файлах Windows:
name fileid filename size maxsize growth usage
MasterScratchPad_Data 1 C:\SQLDATA\MasterScratchPad_Data.MDF 6041600 KB Unlimited 5120000 KB data only
MasterScratchPad_Log 2 C:\SQLDATA\MasterScratchPad_Log.LDF 2111304 KB Unlimited 10% log only
MasterScratchPad_X1_Log 3 E:\SQLDATA\MasterScratchPad_X1_Log.LDF 191944 KB Unlimited 10% log only
Я хотел бы иметь только один файл для журнала (т.е. я могу сделать его больше и настроить параметры роста, но я бы предпочел, чтобы это был только один файл, прежде чем я обновлю базу данных до SQL2008).
Я сделал резервную копию базы данных. Я выдал: BACKUP LOG MasterScratchPad WITH TRUNCATE_ONLY. Я выполнил несколько команд DBCC SHRINKFILE для обоих файлов LOG. Последняя попытка была DBCC SHRINKFILE(MasterScratchPad_X1_Log, 0), но результат тот же, что и выше.
Как мне достичь этой цели, имея только один .LDF? Я не могу найти ничего о том, как удалить тот, у которого fileid 3, и/или как объединить несколько файлов в один файл журнала.
решение1
Это довольно прямолинейно... Вот ваш сценарий ниже. Дайте мне знать, если вам что-то еще понадобится.
Спасибо!
-ВМ
ИСПОЛЬЗОВАТЬ [MasterScratchPad]
ИДТИ
ИЗМЕНИТЬ БАЗА ДАННЫХ [MasterScratchPad] УДАЛИТЬ ФАЙЛ [MasterScratchPad_X1_Log]
ИДТИ
решение2
Тем не менее, будьте внимательны к тому, что вы делаете. Базы данных с одним файлом (база данных, журнал) МЕДЛЕННЕЕ, чем многофайловые — есть веские причины иметь по X файлов в каждой, где X — это количество ядер. Все это хорошо документировано Microsoft — но, похоже, многие не любят читать (я редко вижу компетентного администратора SQL в этих и некоторых других отношениях).