Имя: Пароль:
IT
Админ
Как сделать шринк Data файла в sql 2008
,
0 max1c2011
 
14.10.11
16:01
не делался шринк лога.
Перевел из Full в Simple модель. Сделал шринк. Лог образался, а data - нет.
Кто в курсе - как обрезать data файл?
1 ДенисЧ
 
14.10.11
16:02
правой кнопкой по базе и сжать датабазу.
2 Ёпрст
 
14.10.11
16:02
бекап-потом шринк-наслаждайся
3 Господин ПЖ
 
14.10.11
16:02
а кто сказал что он обрежется...
4 krbIso
 
14.10.11
16:03
Если там есть что резать, то так же как и лог
5 упс
 
14.10.11
16:04
(0) если очень надо, то сначала перерведи в симпл, сделай rebuild index для всех таблиц, потом шринкуй. Переводить в симпл - чтобы лог во время ребилда индексов не разросся.
Но если не было массовых удалений данных - эффекта будет ноль целых хрен десятых
6 max1c2011
 
14.10.11
16:07
(2) пробовал! не помогло!
Пишет свободно 45%
7 Ёпрст
 
14.10.11
16:08
(6) не верю.
8 ДенисЧ
 
14.10.11
16:08
(5)"сделай rebuild index для всех таблиц, потом шринкуй"
Вредный совет. Если только для сжатия.
9 упс
 
14.10.11
16:08
(5) во я прогнал... последовательно:
DBCC SHRINKFILE('имя файла данных', NOTRUNCATE, 0)
DBCC SHRINKFILE('имя файла данных', TRUNCATEONLY, 0)
10 упс
 
14.10.11
16:09
(8) почему это ребилд индекс вредный совет? вот (9) - вредный совет, но сделает как раз то, что хочет автор :)
11 ДенисЧ
 
14.10.11
16:14
(10) сжатие после ребилда - вредный совет.
12 max1c2011
 
14.10.11
16:16
(5)а перевод в симпл - это симпл модель имеется ввиду?
И почему в (9) написано сначала
NOTRUNCATE, а потом TRUNCATEONLY
почему такой порядок
13 smitru
 
14.10.11
16:17
(11) чем?
14 упс
 
14.10.11
16:18
(11) шринк сам по себе вредный. Вариант с ребилдом максимально сожмет файл. Второй вариант будет немного быстрее и немного менее "качественным"
15 smitru
 
14.10.11
16:20
(14) "Вариант с ребилдом максимально сожмет файл"

Ребилд никогда не сжимает это раз, во-вторых под ребилд нужно место и поэтому часто разрастается лог-файл
16 max1c2011
 
14.10.11
16:21
(14) ответь на (12)
17 упс
 
14.10.11
16:22
(15) а шринк после ребилда сожмет файл? а то, что при ребилде индекс будет перестроен заново и будет максимально компактным, что приведет к увеличению свободных страниц, которые сможет "откусить" шринк - это ничего? это раз.
Если база будет в симпл-моде лог файл сильно не разрастется, ибо ребилд относится к минимально протоколируемым операциям. Которые в симпл-моде, как ни странно, протоколируется именно минимально.
18 упс
 
14.10.11
16:24
(16) http://msdn.microsoft.com/ru-ru/library/ms189493.aspx
NOTRUNCATE

Перемещает распределенные страницы из конца файла на место нераспределенных страниц в начале файла с параметром target_percent или без него. Свободное место в конце файла операционной системе не возвращается, и физический размер файла не изменяется. Следовательно, если указан аргумент NOTRUNCATE, файл сжимается незначительно.

Аргумент NOTRUNCATE применим только к файлам данных. На файлы журнала он не влияет.
TRUNCATEONLY

Освобождает все свободное пространство в конце файла операционной системе, но не перемещает страницы внутри файла. Файл данных сокращается только до последнего выделенного экстента.

Аргумент target_size не обрабатывается, если указан аргумент TRUNCATEONLY.

Аргумент TRUNCATEONLY применим только к файлам данных.
19 max1c2011
 
14.10.11
16:25
(18)СПАСИБО!
20 smitru
 
14.10.11
16:26
(17) "Если база будет в симпл-моде лог файл сильно не разрастется, ибо ребилд относится к минимально протоколируемым операциям. "

Чушь.. в симпл-моде лог-файл разрастается офигительно при балк-операциях
21 упс
 
14.10.11
16:32
(20) вероятно это зависит от степени кривизны рук.
22 max1c2011
 
14.10.11
16:34
а подскажите, тупой вопрос, плох скул знаю..
КАК переиндексировать все таблицы?
Т.е. есть ли команда одна или в цикле?
23 ДенисЧ
 
14.10.11
16:37
(22) в цикле
24 smitru
 
14.10.11
16:37
(21) причём тут "кривизна рук"? Это делает сам сиквел "без спроса"

(22) делаешь "план обслуживания" xерез SQL Managment Studio
25 ДенисЧ
 
14.10.11
16:38
вот как это делает 1с в 77

 SET NOCOUNT ON
 DECLARE @TableName char(32)
 DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U'
 OPEN SysCur
 FETCH NEXT FROM SysCur INTO @TableName
 WHILE @@FETCH_STATUS=0 BEGIN
     DBCC DBREINDEX(@TableName)
     FETCH NEXT FROM SysCur INTO @TableName
 END
 CLOSE SysCur
 DEALLOCATE SysCur
26 упс
 
14.10.11
16:43
(24) при том что хрен его знает как вы там и что у себя делаете. При балк операциях лог растет очень-очень мало. А учитывая, что модель восстановления будет не балк-логгед, а симпл, то оооочень маленькая вероятность того, что лог вырастет сильно.
http://blogs.msdn.com/b/sqlserverfaq/archive/2011/01/07/using-bulk-logged-recovery-model-for-bulk-operations-will-reduce-the-size-of-transaction-log-backups-myths-and-truths.aspx
Для примера. В фулл-моде 40 мб, в балк-логгед 3 мб. Практически на порядок меньше. Ясен пень, что база там маленькая, но пример показателен. Лог вырастет не больше чем на размер самой большой таблицы в базе (и то - это в самом худшем случае)
27 smitru
 
14.10.11
16:46
(26) я говорю про базы SQL работающие под 1Совскими базами.. И при установленном симпл-режиме при размерах самих баз 20-30 Гб - лог-файлу улетают по 50Гб влёгкую

ЗЫ.. Но теоретиГГам этого не понять :-)
28 упс
 
14.10.11
16:54
(27) в симпл-моде лог 50 гб? омфг, читайте (21). Только без слова "вероятно".
29 упс
 
14.10.11
16:55
(28) "для базы 30 гиг в симпл-моде лог" и далее по тексту
30 Господин ПЖ
 
14.10.11
16:59
(28) причем тут кривизна рук... все зависит от выполнения checkpoint-ов на базе...
31 упс
 
14.10.11
17:15
и при каких условиях чекпойнты могут не выполняться своевременно? у пользователя есть только один параметр для модификации - recovery interval, который может быть коряво выстроен. Остальные причины вызова чекпойнта не могут быть перепределены.
32 Господин ПЖ
 
14.10.11
17:19
(31) длииииииииииииииииииная транзакция
33 упс
 
14.10.11
17:36
(32) а, ну если в длиииииииииинных транзакциях виноваты не кривые руки, то да, конечно, все дело в чекпойнтах
34 Господин ПЖ
 
14.10.11
17:47
еще вариант - есть репликация, идет накопление данных
35 Господин ПЖ
 
14.10.11
17:56
но это уже не к чекпоинтам, это вообще вариант - "почему растет база".
36 smitru
 
14.10.11
20:32
(35) зачем репликация? Даже выполнение реструктуризации базы средствами 1С уже вызывает дикий рост лог-файла даже в симпл-моде