Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Размер файла базы данных MS SQL (http://forum.oszone.net/showthread.php?t=73481)

Odessit 25-10-2006 10:45 502428

Размер файла базы данных MS SQL
 
Подскажите пожалуйсто в такой ситуации: есть база данных MS SQL удалил (дроп) здаровенную таблицу, делаю бекап базы - бэкап маленького размера. А сама база так и осталась немеренная... Что сделать, как уменьшить физический размер базы?

amel27 25-10-2006 11:33 502448

В Enterprise Manager База Данных\Все задачи\Shrink Database, или в QA:
Код:

DBCC SHRINKDATABASE (DataBase)
GO


Odessit 25-10-2006 15:19 502555

Большое спасибо! Получилось! База с 4 гигов стала 200 метров. Ещё бы узнать как базу лога почистить

amel27 26-10-2006 05:51 502795

Odessit
Цитата:

Ещё бы узнать как базу лога почистить
Лог чистится только при его бэкапе, если вам хватает бэкапов базы то лучше отключить накопительный лог:
В EM: База данных\свойства\Options - сменить Model с "Full" на "Simple"

XaHAleX 27-04-2007 16:05 580420

amel27 А за что "отвечает" накопительный лог? если его отключить, то какую инфу потеряешь? (в смысле не сможешь посмотреть)...

amel27 28-04-2007 10:46 580738

XaHAleX

В режиме Full содержит инфу о всех изменениях в БД, поэтому есть возможность откатить (назад) состояние базы на любое заданное время... или в случае утери файла БД восстановить любое состояние из копии и от нее раскрутить (вперед) до последней завершенной транзакции, т.е. восстановить актуальное состояние БД. В режиме Simple хранит данные только незавершенных транзакций, которые удаляются по их завершении и сохранении в файле БД.

Anatoliy2004 28-04-2007 13:34 580811

Я прописав в Jobs такое, сдесь и обрезание (SHRINKDATABASE) и архивация базы. Ето делаеться у меня каждую ночь.

BACKUP DATABASE [NewPlan] TO DISK = N'f:\backupSQL\NewPlan' WITH INIT , NOUNLOAD , NAME = N'NewPlan backup', NOSKIP , STATS = 10, NOFORMAT

BACKUP LOG [NewPlan] TO DISK = N'f:\backupSQL\NewPTr' WITH INIT , NOUNLOAD , NAME = N'NewPlan backup trans', NOSKIP , STATS = 10, NOFORMAT

BACKUP LOG [NewPlan] WITH TRUNCATE_ONLY

DBCC SHRINKDATABASE ('NewPlan')

BACKUP DATABASE [Master] TO DISK = N'f:\backupSQL\master' WITH INIT , NOUNLOAD , NAME = N'Master backup', NOSKIP , STATS = 10, NOFORMAT
BACKUP DATABASE [Model] TO DISK = N'f:\backupSQL\Model' WITH INIT , NOUNLOAD , NAME = N'Model backup', NOSKIP , STATS = 10, NOFORMAT
BACKUP DATABASE [Msdb] TO DISK = N'f:\backupSQL\Msdb' WITH INIT , NOUNLOAD , NAME = N'Msdb backup', NOSKIP , STATS = 10, NOFORMAT


а ето переиндексация базы

DECLARE @RC int
EXEC @RC = [NewPlan].[dbo].[_1sp_DBReindex]
DECLARE @PrnLine nvarchar(4000)
PRINT 'Stored Procedure: NewPlan.dbo._1sp_DBReindex'
SELECT @PrnLine = ' Return Code = ' + CONVERT(nvarchar, @RC)
PRINT @PrnLine


База у меня 9 Гб.
а в офисе 25Гб.
Все работает отлично.
А Файл трансакций как заметилamel27 уменьшаеться при бекапе базы или ее обрезании(шринк).

amel27 29-04-2007 07:35 581056

Anatoliy2004

- файл транзакций (LOG) не уменьшается при шринке, только при его бэкапе... можно и без создания копии (TRUNCATE_ONLY), соответственно, строчка "BACKUP LOG [NewPlan] WITH TRUNCATE_ONLY" в скрипте после бэкапа лишняя;
- нужно предупреждать, что хранимка "_1sp_DBReindex" не является штатной для SQL;
- скрипты нужно обязательно брать в теги кода.

З.Ы.у меня база 60Гб и вполне хватает штатного "Maintance Plan" без всяких скриптов с откатом в неделю.


Время: 16:28.

Время: 16:28.
© OSzone.net 2001-