Назад | Перейти на главную страницу

Лучший способ переместить файл журнала в SQL Server 2005

Очевидно, что вы можете отсоединить все базы данных и повторно подключить с помощью процедур sp_attach и sp_detach. Есть ли онлайн-способ сделать это, быстро гуглил, но ничего не вижу.

Лучший способ, который потребует некоторого времени простоя, - использовать ALTER DATABASE ... SET OFFLINE. Для этого есть несколько веских причин.

  1. Владелец базы данных не изменился. Это может иметь последствия в отношении подразумеваемых разрешений и цепочки владения между базами данных.
  2. Такие конфигурации, как FILESTREAM (в 2008 г.) или конфигурация конкретной базы данных (например, объединение в цепочку владения базой данных), не теряются.
  3. База данных не подключается повторно с неправильным именем. Жирная аппликатура все еще бывает.

Подробнее здесь:

Как переместить базу данных SQL Server в один экземпляр без потери настроек

К сожалению, не существует "безопасного" онлайн-метода.

Вы должны отключить базу данных или отключить ее.

Вы не можете «очистить» файл журнала, как файл данных.

MS KB 224071

Вы можете сделать резервную копию, а затем восстановить резервную копию. Во время восстановления вы можете указать другое место для журнала транзакций.

Если вы хотите переместить файл журнала без необходимости отключать базу данных, есть способ, которым я пользовался раньше. Надеюсь, я правильно помню:

  1. Добавьте новый файл журнала в новое место, например:

    ALTER DATABASE foo ДОБАВИТЬ ФАЙЛ ЖУРНАЛА (NAME = NewLog, FILENAME = 'YourNewPhysicalPath', SIZE = 100MB, другие параметры ...);

  2. Очистите старый файл журнала с помощью:

    USE foo; DBCC SHRINKFILE (OldLog, EMPTYFILE);

  3. Сделайте резервную копию журнала с помощью BACKUP LOG foo ...

  4. Удалите старый файл журнала с помощью:

    ALTER DATABASE foo УДАЛИТЬ ФАЙЛ OldLog;

Если последний говорит, что вы не можете удалить, потому что файл не пуст, попробуйте выполнить 2 и 3 еще раз, а затем 4.

РЕДАКТИРОВАТЬ: Ну, оказывается, я не запомнил это правильно ... ЭТО НЕ БУДЕТ РАБОТАТЬ таким образом, и, как указал gbn, вы не можете «очистить» файл журнала через SHRINKFILE (но это не было моей целью в любом случае - я просто хотел чтобы пометить файл как «не для использования», чтобы он не использовался повторно и его можно было удалить позже). Я думаю, что подобная техника все еще возможна для любых дополнительных файлов журналов, которые у вас есть, кроме первого, но я опубликую об этом, когда у меня будет возможность изучить это.