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



Помогите усечь и сжать log MSSQL, перевод в Simple и шринк не дает результата

Помогите усечь и сжать log MSSQL, перевод в Simple и шринк не дает результата
Я
   MKFreeUser
 
18.12.17 - 09:52
Помогите с проблемой, есть база на MSSQL, mdf - 12ГБ, LDF 55ГБ. Перевел базу в "простую" модель восстановления,сделал шринк, размер лога уменьшился на 1МБ.Повторил - лог не изменился.

База была создана, как восстановление из другой базы. Начальный размер файла mdf -12ГБ, начальный размер LOG -55ГБ.

log_reuse_wait
6
log_reuse_wait_desc
REPLICATION

DBCC OPENTRAN
Сведения о транзакциях для базы данных

Сведения о реплицированных транзакциях:
Самый старый номер LSN : (0:0:0)
Самый старый нераспределенный номер LSN : (63546:40212:1)
Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору.
 
 
   ptiz
 
1 - 18.12.17 - 09:57
alter database mydb set recovery simple
go
DBCC SHRINKFILE ('mydb_log', 0);
go
alter database mydb set recovery full
go

отлично работает
   MKFreeUser
 
2 - 18.12.17 - 10:00
Лог не уменьшился после этой процедуры
   MKFreeUser
 
3 - 18.12.17 - 10:02
Не удалось сжать файл журнала 2 , так как все логические файлы журналов, расположенные в конце файла, находятся в использовании.

(строк обработано: 1)
Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору.
   ptiz
 
4 - 18.12.17 - 10:14
(3) Странно. 1С с фоновыми заданиями не мешается в этой базе?
   MKFreeUser
 
5 - 18.12.17 - 10:16
Фоновые отключены давно, база создана из рабочей базы. Я вычитал, что проблема может быть в этом log_reuse_wait_desc
REPLICATION, но я не знаю как это изменить, да и мне не ясно что это такое, у меня небольшой опыт администрирования на уровне MSSQL
   Ёпрст
 
6 - 18.12.17 - 10:27
(0)
BACKUP LOG
+DBCC SHRINKFILE
спасут тебя.
   MKFreeUser
 
7 - 18.12.17 - 10:29
MS SQL 2008 там нет такой команды
   MKFreeUser
 
8 - 18.12.17 - 10:30
BACKUP LOG MyBase WITH TRUNCATE_ONLY
go

Сообщение 155, уровень 15, состояние 1, строка 24
TRUNCATE_ONLY не является известным параметром BACKUP.
   timurhv
 
9 - 18.12.17 - 10:30
(7) Сделайте полную резервную копию и шринкуйте.
   Провинциальный 1сник
 
10 - 18.12.17 - 10:33
Тупо в свойствах базы уменьшаете размер ldf и нажимаете Ок. Не надо никаких команд писать. Шринкнется само.
 
 Рекламное место пустует
   MKFreeUser
 
11 - 18.12.17 - 10:33
все простые действия я делал:
1) создать бэкап
2) перевести в simple
3) сделать шринк
4) повторить шринк

результат минимальный, ну не может лог быть больше в 4 раза самой базы после бэкапа
   Ёпрст
 
12 - 18.12.17 - 10:34
(11) переводить в симпл не надо
   Провинциальный 1сник
 
13 - 18.12.17 - 10:34
(12) Если не делать бэкап журнала транзакций - то смысла в фулл нет вообще никакого.
   MKFreeUser
 
14 - 18.12.17 - 10:36
(10) пробовал тупо уменьшить размер лога - ошибок не выдает, но и результата нет

(12) в симпле однозначно должно было порезать базу - но тут почему-то не хочет. У меня еще с десяток баз, и в тех что я проверил - подобной проблемы не наблюдается - спокойно шринкуются
   Ёпрст
 
15 - 18.12.17 - 10:36
(13) И ?
   Ёпрст
 
16 - 18.12.17 - 10:37
(14) еще раз, не надо делать симпл.
Сделай бэкап лога и шринк.
   Провинциальный 1сник
 
17 - 18.12.17 - 10:37
(14) То есть. Сделали симпл, нажали Ок. Открыли еще раз - уменьшили файл до 1 мегабайта - нажали Ок. И что?
   Ёпрст
 
18 - 18.12.17 - 10:37
А так. делаешь план обслуживания, в задачу пихаешь бэкап лога и стрелочкой - инструкцию t-sql на шринк лога. Всё
   MKFreeUser
 
19 - 18.12.17 - 10:40
какой план обслуживания - если вручную не шринкуется. Может есть какие команды, чтобы посмотреть возможные причины?
   Ёпрст
 
20 - 18.12.17 - 10:42
(19) ну, если делаешь как в (8) то ясен пень
   Ёпрст
 
21 - 18.12.17 - 10:43
Если лень читать бол, то достаточно создать план обслуживания и посмотреть там скрипт выполнения от бэкапа лога
   MKFreeUser
 
22 - 18.12.17 - 11:43
0. BackUp полный при полном резервировании
1. exec sp_removedbreplication 'MyDB';
2. Шринк при полном резервирование (возможно лишнее действие)
3. Шринк при simple
помогло, спасибо
   Провинциальный 1сник
 
23 - 18.12.17 - 12:55
(22) А, так у вас была репликация включена..
   Seriy_Volk
 
24 - 18.12.17 - 13:26
(22) как то наступали на эти грабли, диагностируется вот так:

1. определяем степень использования лог файла
dbcc sqlperf(logspace)
2. видим, что лог используется почти целиком, выясняем причину, глядя на колонки log_reuse_wait и log_reuse_wait_desc запроса
select * from sys.databases where name='my_base'
3. в log_reuse_wait_desc стоит REPLICATION, хотя в базе репликации никогда не было. Т.е. сервер не будет очищать лог, пока не пройдет репликация, нужно принудительно ее очистить:
use master
exec sp_removedbreplication
@dbname = 'my_base'
go
4. проверяем еще раз select * from sys.databases where name='my_base'
   Seriy_Volk
 
25 - 18.12.17 - 13:30
(24) забыл упомянуть, что инструкция найдена где то на просторах интернета и под ней было довольно много благодарных отзывов, так что ситуация не такая уж редкая.
   MKFreeUser
 
26 - 18.12.17 - 13:36
а что значит "включена репликация", может кто пояснить?
Это не бэкапы по регламенту FULL и ЖТ, а что-то другое?
   Мыш
 
27 - 18.12.17 - 13:50
(0) Бэкап лог в нулл, шринк лог. Повторить два раза. Профит.
   Seriy_Volk
 
28 - 18.12.17 - 14:09
(26) включена репликация, значит сервер думает, что где то есть еще одна база, которую нужно поддерживать синхронизированной с текущей базой. Для этого, кроме всего прочего, используется журнал транзакций.
   rphosts
 
29 - 18.12.17 - 15:34
(0)у мну правда фул мода, поэтому для упыпырища шринк:

USE [upp]
ALTER DATABASE [upp] SET RECOVERY SIMPLE
go 
DBCC SHRINKFILE ([upp_log], 1);
ALTER DATABASE [upp] SET RECOVERY FULL
go

для простой моды достаточно будет:
USE [upp] 
DBCC SHRINKFILE ([upp_log], 1);
   Мыш
 
30 - 18.12.17 - 16:32
(29) Зачем до 1 Мб резать?
   rphosts
 
31 - 18.12.17 - 16:48
(30) мне это приемлимо
   alkorolev
 
32 - 25.12.17 - 17:35
(29) базу с UPP82 переименовали, изверги!
   alkorolev
 
33 - 25.12.17 - 17:46
(0) полный бэкап сделайте. После этого всё отлично шринкуется
 
 
   Мыш
 
34 - 25.12.17 - 17:47
(33) См. (27)
   Tateossian
 
35 - 25.12.17 - 18:01
Можно еще детач-аттач сделать (но без лога) - тогда создастся новый лог.
   Seriy_Volk
 
36 - 26.12.17 - 11:22
Редкий случай для любого форума - автор темы задал хорошо сформулированный, хотя и нетривиальный, вопрос. Затем сам нашел верное решение, не забыл его описать в 22, но продолжает получать бесполезные советы...
   Tateossian
 
37 - 26.12.17 - 11:25
(36) Тривиальнейший вопрос, вы не правы.
   Tateossian
 
38 - 26.12.17 - 11:28
(36) У меня коллега книжечка где-то валялась, «SQL сервер для самых маленьких», так там об этом неписано где-то в начале, как обслуживать СУБД с помощью конструкторов. Там еще текст можно сгенерить и картиночки двигать.
   Seriy_Volk
 
39 - 26.12.17 - 11:42
(38) у меня статистики маловато, но ни разу не встречал кого то, кто включал бы на MS SQL в регулярный план обслуживания скрипт, убирающий ошибочную репликацию для БД. А без этого все советы в теме бесполезны.


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