|   |   | 
| 
 | Помогите усечь и сжать log MSSQL, перевод в Simple и шринк не дает результата | ☑ | ||
|---|---|---|---|---|
| 0
    
        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 выдает сообщения об ошибках, обратитесь к системному администратору. | |||
| 1
    
        ptiz 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 отлично работает | |||
| 2
    
        MKFreeUser 18.12.17✎ 10:00 | 
        Лог не уменьшился после этой процедуры     | |||
| 3
    
        MKFreeUser 18.12.17✎ 10:02 | 
        Не удалось сжать файл журнала 2 , так как все логические файлы журналов, расположенные в конце файла, находятся в использовании.
 (строк обработано: 1) Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору. | |||
| 4
    
        ptiz 18.12.17✎ 10:14 | 
        (3) Странно. 1С с фоновыми заданиями не мешается в этой базе?     | |||
| 5
    
        MKFreeUser 18.12.17✎ 10:16 | 
        Фоновые отключены давно, база создана из рабочей базы. Я вычитал, что проблема может быть в этом log_reuse_wait_desc
 REPLICATION, но я не знаю как это изменить, да и мне не ясно что это такое, у меня небольшой опыт администрирования на уровне MSSQL | |||
| 6
    
        Ёпрст гуру 18.12.17✎ 10:27 | 
        (0)
 BACKUP LOG +DBCC SHRINKFILE спасут тебя. | |||
| 7
    
        MKFreeUser 18.12.17✎ 10:29 | 
        MS SQL 2008 там нет такой команды     | |||
| 8
    
        MKFreeUser 18.12.17✎ 10:30 | 
        BACKUP LOG MyBase WITH TRUNCATE_ONLY
 go Сообщение 155, уровень 15, состояние 1, строка 24 TRUNCATE_ONLY не является известным параметром BACKUP. | |||
| 9
    
        timurhv 18.12.17✎ 10:30 | 
        (7) Сделайте полную резервную копию и шринкуйте.     | |||
| 10
    
        Провинциальный 1сник 18.12.17✎ 10:33 | 
        Тупо в свойствах базы уменьшаете размер ldf и нажимаете Ок. Не надо никаких команд писать. Шринкнется само.     | |||
| 11
    
        MKFreeUser 18.12.17✎ 10:33 | 
        все простые действия я делал:
 1) создать бэкап 2) перевести в simple 3) сделать шринк 4) повторить шринк результат минимальный, ну не может лог быть больше в 4 раза самой базы после бэкапа | |||
| 12
    
        Ёпрст гуру 18.12.17✎ 10:34 | 
        (11) переводить в симпл не надо     | |||
| 13
    
        Провинциальный 1сник 18.12.17✎ 10:34 | 
        (12) Если не делать бэкап журнала транзакций - то смысла в фулл нет вообще никакого.     | |||
| 14
    
        MKFreeUser 18.12.17✎ 10:36 | 
        (10) пробовал тупо уменьшить размер лога - ошибок не выдает, но и результата нет 
 (12) в симпле однозначно должно было порезать базу - но тут почему-то не хочет. У меня еще с десяток баз, и в тех что я проверил - подобной проблемы не наблюдается - спокойно шринкуются | |||
| 15
    
        Ёпрст гуру 18.12.17✎ 10:36 | 
        (13) И ?     | |||
| 16
    
        Ёпрст гуру 18.12.17✎ 10:37 | 
        (14) еще раз, не надо делать симпл.
 Сделай бэкап лога и шринк. | |||
| 17
    
        Провинциальный 1сник 18.12.17✎ 10:37 | 
        (14) То есть. Сделали симпл, нажали Ок. Открыли еще раз - уменьшили файл до 1 мегабайта - нажали Ок. И что?     | |||
| 18
    
        Ёпрст гуру 18.12.17✎ 10:37 | 
        А так. делаешь план обслуживания, в задачу пихаешь бэкап лога и стрелочкой - инструкцию t-sql на шринк лога. Всё     | |||
| 19
    
        MKFreeUser 18.12.17✎ 10:40 | 
        какой план обслуживания - если вручную не шринкуется. Может есть какие команды, чтобы посмотреть возможные причины?     | |||
| 20
    
        Ёпрст гуру 18.12.17✎ 10:42 | 
        (19) ну, если делаешь как в (8) то ясен пень     | |||
| 21
    
        Ёпрст гуру 18.12.17✎ 10:43 | 
        Если лень читать бол, то достаточно создать план обслуживания и посмотреть там скрипт выполнения от бэкапа лога     | |||
| 22
    
        MKFreeUser 18.12.17✎ 11:43 | 
        0. BackUp полный при полном резервировании
 1. exec sp_removedbreplication 'MyDB'; 2. Шринк при полном резервирование (возможно лишнее действие) 3. Шринк при simple помогло, спасибо | |||
| 23
    
        Провинциальный 1сник 18.12.17✎ 12:55 | 
        (22) А, так у вас была репликация включена..     | |||
| 24
    
        Seriy_Volk 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' | |||
| 25
    
        Seriy_Volk 18.12.17✎ 13:30 | 
        (24) забыл упомянуть, что инструкция найдена где то на просторах интернета и под ней было довольно много благодарных отзывов, так что ситуация не такая уж редкая.     | |||
| 26
    
        MKFreeUser 18.12.17✎ 13:36 | 
        а что значит "включена репликация", может кто пояснить?
 Это не бэкапы по регламенту FULL и ЖТ, а что-то другое? | |||
| 27
    
        Мыш 18.12.17✎ 13:50 | 
        (0) Бэкап лог в нулл, шринк лог. Повторить два раза. Профит.     | |||
| 28
    
        Seriy_Volk 18.12.17✎ 14:09 | 
        (26) включена репликация, значит сервер думает, что где то есть еще одна база, которую нужно поддерживать синхронизированной с текущей базой. Для этого, кроме всего прочего, используется журнал транзакций.     | |||
| 29
    
        rphosts 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 Мб резать?     | |||
| 31
    
        rphosts 18.12.17✎ 16:48 | 
        (30) мне это приемлимо     | |||
| 32
    
        alkorolev 25.12.17✎ 17:35 | 
        (29) базу с UPP82 переименовали, изверги!     | |||
| 33
    
        alkorolev 25.12.17✎ 17:46 | 
        (0) полный бэкап сделайте. После этого всё отлично шринкуется     | |||
| 34
    
        Мыш 25.12.17✎ 17:47 | 
        (33) См. (27)     | |||
| 35
    
        Tateossian 25.12.17✎ 18:01 | 
        Можно еще детач-аттач сделать (но без лога) - тогда создастся новый лог.     | |||
| 36
    
        Seriy_Volk 26.12.17✎ 11:22 | 
        Редкий случай для любого форума - автор темы задал хорошо сформулированный, хотя и нетривиальный, вопрос. Затем сам нашел верное решение, не забыл его описать в 22, но продолжает получать бесполезные советы...     | |||
| 37
    
        Tateossian 26.12.17✎ 11:25 | 
        (36) Тривиальнейший вопрос, вы не правы.     | |||
| 38
    
        Tateossian 26.12.17✎ 11:28 | 
        (36) У меня коллега книжечка где-то валялась, «SQL сервер для самых маленьких», так там об этом неписано где-то в начале, как обслуживать СУБД с помощью конструкторов. Там еще текст можно сгенерить и картиночки двигать.     | |||
| 39
    
        Seriy_Volk 26.12.17✎ 11:42 | 
        (38) у меня статистики маловато, но ни разу не встречал кого то, кто включал бы на MS SQL в регулярный план обслуживания скрипт, убирающий ошибочную репликацию для БД. А без этого все советы в теме бесполезны.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |