Вход | Регистрация

Информационные технологии ::

Метки:

Сжатие SQL баз

Я
   Nick-
08.08.04 - 13:08
Дано. 10 Гб. диск на котором крутятся несколько SQL баз 1C (MS SQL 7.0). Свободного места осталось 500 мб. Сервер поругивается на недостаток места. Смотрю на базы. Занимают по несколько Гб (MDF + LDF). Причем внутри и у MDF и у LDF собственно данные занимают 30-40%. ( у LDF побольше) все остальное свободное пространство. Четыре базы (2000-2003гг) закрыты, используются только справочно и текущий (2004г) учет в них не ведется. Естественная мысль - убрать свободное место внутри этих баз.
Пробовал шринк и сохранение-восстановление, обрезание LDF - ничего не меняется.
По архивам и факам лазил - прямого ответа не нашел. Только как перенести базы и заново подключить из на новом месте. Еще советовали шринк - но он у меня не работает. Что-то неправильно делаю. Я не спец - помогите советом
 
 
   Волшебник
 
1 - 08.08.04 - 14:38
Поставь еще один жесткий диск и перенеси туда несколько баз.
   Матрейя
 
3 - 08.08.04 - 19:15
Саймон Сю  
Как перехитрить упрямые журналы и заставить их сжиматься по команде.
Чтобы сжать заданный файл данных или файл журнала указанной базы данных в SQL Server 7.0, можно воспользоваться предложением DBCC Shrinkfile. Однако профессиональные пользователи SQL Server часто спрашивают меня, почему при использовании команды DBCC Shrinkfile сжатие журнала транзакций не происходит немедленно, и как вообще уменьшить размеры журнала транзакций.

При запуске команды DBCC Shrinkfile в SQL Server 7.0 сжатие файлов журналов не происходит тотчас. Дело в том, что операция DBCC Shrinkfile производится только при достижении контрольной точки или же при резервном копировании журнала транзакций. SQL Server разбивает каждый физический файл журнала на несколько сегментов, называемых виртуальными файлами журнала (virtual log files, VLF). Они и образуют журнал транзакций. Файлы VLF усекаются в двух случаях: либо при достижении контрольной точки, либо после снятия с них резервной копии. В произвольный момент времени можно обнаружить файлы VLF, у которых в начале, в середине или в конце файла журнала находится свободное или повторно используемое пространство памяти. Только тогда, когда файлы VLF, которые SQL Server пометил как разрешающие сжатие, располагаются в конце файла журнала, команда DBCC Shrinkfile может удалить VLF и сжать файл журнала. Поскольку SQL Server может сжать файл журнала только до границы виртуального файла журнала, невозможно сжать файл журнала до размера, меньшего, чем размер виртуального файла журнала. Даже если файл журнала не используется. Более подробно о виртуальных файлах журнала написано в SQL Server Books Online-BOL.
   Матрейя
 
4 - 08.08.04 - 19:16
ЛИСТИНГ 1: Сценарий сжатия файла журнала.

/* Для получения идентификатора файла, который требуется сжать,
запустите запрос "SELECT fileid, name,filename FROM <db_name>..sysfiles" */

USE <db_name>
GO
DBCC shrinkfile(<fileid>,notruncate)
DBCC shrinkfile(<fileid>,truncateonly)
CREATE TABLE t1 (char1 char(4000))
GO
DECLARE @i int
SELECT @i = 0
WHILE (1 = 1)
BEGIN
WHILE (@i < 100)
BEGIN
INSERT INTO t1 values (`a`)
SELECT @i = @i +1
END
TRUNCATE TABLE t1
backup log <db_name> with truncate_only
END
GO


Список тем форума
Рекламное место пустует   Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует