Войти

Показать полную графическую версию : Размер файла базы данных MS SQL


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

amel27
25-10-2006, 11:33
В Enterprise Manager База Данных\Все задачи\Shrink Database, или в QA:DBCC SHRINKDATABASE (DataBase)
GO

Odessit
25-10-2006, 15:19
Большое спасибо! Получилось! База с 4 гигов стала 200 метров. Ещё бы узнать как базу лога почистить

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

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

amel27
28-04-2007, 10:46
XaHAleX

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

Anatoliy2004
28-04-2007, 13:34
Я прописав в 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
Anatoliy2004

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

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




© OSzone.net 2001-2012