Прервите соединения с базой данных в MS Sql Server 2000
-
03-07-2019 - |
Вопрос
У меня есть база данных, с которой у нас проблемы. Каким-то образом журнал стал 400 Гб, и база данных стала бесполезной. Я хочу удалить все существующие подключения к базе данных, а затем отключить базу данных.
По сути, я собираюсь избавиться от гигантского файла журнала, создать новый и заново подключить, если он работает. Если нет, мы собираемся восстановить из резервных копий.
Решение 3
Ну, вообще-то, никакие команды вообще не будут выполняться с базой данных. В итоге мы отключили службу, создали пустые копии файлов mdf и ldf и заменили те, что используются сервером sql. После этого мы восстановили базу данных из последней резервной копии и вуаля, она снова работает (в основном).
Другие советы
Если журнал бесполезен, вы можете использовать эти команды, но, пожалуйста, документируйте их самостоятельно перед применением на рабочем сервере.
РЕЗЕРВНЫЙ ЛОГ С NO_LOG для отмены страниц из журнала,
sp_helpdb для поиска имен файлов базы данных
DBCC SHRINKFILE ('имя файла вашего журнала', 0) - для объединения физического файла до указанного размера.
Если вы уверены, что открытых транзакций нет, вы можете перевести базу данных в однопользовательский режим.
ALTER DATABASE [YourDB] SET SINGLE_USER WITH NO_WAIT
Когда вы закончите, верните его в многопользовательский режим. ALTER DATABASE [YourDB] SET MULTI_USER WITH NO_WAIT
Делает
сделайте резервную копию вашего db с помощью truncate_only, затем dbcc shrinkdatabase (yourdb) не сожмет для вас файл журнала?
ALTER DATABASE [DB_NAME_HERE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DB_NAME_HERE] SET MULTI_USER