Как упаковывать данные в MS SQL Server 2000? #314911


#0 by lokiii
Имеется связка 1Сv77+MS SQL Server 2000. ПРоизвели обрезку базы, вроде как все лишнее вычистили. А ведь, как изввестно, в SQL-сервере удаленные записи физически не удаляются, и файл с базой(mdf) стал даже больше, чем перед обрезкой. Говорят, надо базу mssqlсервера упаковывать. Вот только как упаковывать базу sql-сервера?
#1 by mishaPH
Оно тебе мешает?
#2 by shaggyboy
>ведь, как изввестно, в SQL-сервере удаленные записи физически не удаляются а, простите, откуда вам это известно?
#3 by lokiii
По слухам, да. А что, разве нет?
#4 by mikecool
файл стал больше, но данных в нем нет.... не парься, сделай шринк с очисткой пустого места....
#5 by shaggyboy
документацию читал?
#6 by lokiii
Если бы все было так просто... Сделал я shrink , а он только журнал транзакций(*.ldf) обрезал и все. А mdf-ник остался таким же по размеру. А ведь насколько я понимаю его тоже можно сжать, вычистив удаленные записи. Только как?
#7 by shaggyboy
а нафига?
#8 by ВторНик
тупо, но делал как-то раз так, создавал новую базу в SQL и экспортировал из данные из имеющейся базы  в новую, ужалась в 3 раза с 10Гб до 3. естественно после этогоо переподключил юзеров.
#9 by ВосточныйПарень
Шринк этого не делает?
#10 by Guk
Упаковать базу данных можно или с помощью графического интерфейса приложения SQL Server Enterorise Manager, или с помощью выполнения кода (например с QA). Первый случай выполняется посредством вызова контекстного меню на необходимой базе и выбора All Tasks - Shrink Database... . Второй случай опишем несколько подробнее. В приведенном коде выполняется 4 строки кода. 1 строка - усечение всей базы. 2 строка - усечение только DATA файла до размера 101 мб. 3 строка - усечение только файла транзакций до размера 0 мб (несколько килобайт). 4 - строка - очистка журнала транзакций (иногда файл транзакций усечь невозможно, по причине заисших открітіх транзакций, выполнение этой команды должно привести до полной очистки журнала транзакций). Код: use [base_1c] DBCC SHRINKFILE (N'base_1c_Log', 0) DUMP TRANSACTION base_1c WITH TRUNCATE_ONLY   где base_1c - имя базы данных. Если приведенный више код не привел к требуемым результатам, можно попробовать выполнить следующий код: Код: use [base_1c] BACKUP LOG base_1c WITH TRUNCATE_ONLY GO DUMP TRANSACTION base_1c WITH no_log GO CHECKPOINT GO DBCC SHRINKFILE(base_1c_log,2) где base_1c - имя базы данных. Последняя строка - получение таблицы с информацией о занимаемом месте и свободном метсе в файле транзакций.
#11 by ВторНик
+просто такой левак подвернулся ;)
#12 by lokiii
шринком я уже пробовал... Спасибо за совет, сейчас попробую.
#13 by Guk
перед шринком checkdb запусти...
#14 by shaggyboy
перед таким шринком бэкап нужет
#15 by Guk
Зачем?...
#16 by ВторНик
бэкап нужен всегда.
#17 by bodri
Можно также попробовать выгрузка и загрузка, помогает
#18 by ВторНик
мало
#19 by Timuss
Фулл бекап, затем шринк.... так имхо
#20 by КонецЦикла
Не трогай ты базу, делать нехер больше? Жить мешает?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям