8.х SQL Server 2005

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем Mark768, 14 ноя 2009.

  1. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29
    Всем привет.

    Столкнулся с такой проблемой:

    Файлы транзакций типа ИмяБазы_log.LDF растут как на дрожжах. За пару недель работы размер может достигать несколько десятков ГБт (при размере файла базы - около 5ГБт).

    В свойставх базы разрешено автосжатие.

    Если в свойствах базы запрещаю авторост лога или ограничиваю его размер, то по факту достижения им максимально допустимого значения 1С выдает ошибку SQL сервера с указанием, что файл лога переполнен.

    Если принудительно запускаю функцию сжатия базы или конкретно файла лога, то SQL делает вид, что типа все готово, однако размеры файлов не изменяются.

    Чувствую, что чего-то недопонимаю. Помогите, кто в курсе.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Документы, видимо, часто перепроводятся в больших количествах - от этого "распухает" журнал.
    Выход - делать полную копию базы и чистить журнал.
  3. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29
    Если я ничего не путаю, и Вы имеете в виду журнал регистрации 1С, то он находится на сервере 1С и к СУБД не имеет никакого отношения.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Нет, я имею в виду журнал транзакций SQL, который и есть ИМЯ_БАЗЫ.LDF. Его нужно чистить периодически, но делать это желательно после бэкапа базы.
  5. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29
    Вот в том-то и дело, что чистить его пока получается только одним зверским способом:
    1. Выгрузка конфигуратором базы в файл.
    2. Удаление базы с сервера 1С (и с SQL соответственно).
    3. Создание базы заново.
    4. Загрузка конфигуратором базы из файла

    Счастья хватает примерно на неделю - другую. :unsure:

    Перепробовал все, что нашел:
    1. Запрещал авторост лога.
    2. Разрешал авторост, но ограничивал конечный размер.
    3. Разрешал авторост, но очень маленькими дозами (1М).
    4. Запускал принудительно сжатие базы и конкретно файла.

    Из всего этого помогает лишь пункт 3 - файл растет медленно (но верно).
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Достаточно сделать полный бэкап базы средствами SQL, и потом запустить СЖАТИЕ журнала.

    Если баз много, то делается план обслуживания на бэкап баз и последующую очистку журналов транзакций. Журналы транзакций в этом случае придется чистить через написаный руками скрипт.
    Делов на 30 минут с перерывами :)
  7. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

    Подскажите, бестолковому, как это сделать. Ниасилю. :unsure:
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    SQL Server Managment - DATABASES - на нужной базе правой кнопкой мыши - TASKS - BackUp - указать в какой файл нужно сделать бэкап. ОК.

    (SQL Server Managment - БазыДанных - на нужной базе правой кнопкой мыши - ЗАДАЧИ - РЕЗЕРВНОЕ КОПИРОВАНИЕ - указать в какой файл нужно сделать бэкап. ОК.)

    После завершения, зайти в TASKS, выполнить SHRINK - FILES - в FileType выбрать LOG - OK.
    (После завершения, зайти в ЗАДАЧИ, выполнить СЖАТЬ - ФАЙЛЫ - в Тип файла выбрать ЛОГ - OK.)


    После этих действий, журнал будет занимать порядка 500Кб(это однако минимум).
  9. reboot
    Offline

    reboot Опытный в 1С

    Регистрация:
    13 апр 2006
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Ну тогда проше создать задачу на sql сервере что бы он сжимал лог
  10. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

    Спасибо, однако я это все делал. После нажатия ОК на сжатии лога окно закрывается почти моментально без всяких ошибок и прочих сообщений и размер файла не меняется. Пробовал эту процедуру после остановки сервера 1С - тажефигня. Или SQL без бэкапа не делает сжатие (я делаю выгрузку конфигуратором)? Попробую позже с бэкапом, но чета я сомневаюсь.
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Да. SQL без ПОЛНОГО бэкапа базы НЕ СЖИМАЕТ журнал транзакций.
  12. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

    :unsure: Бэкап делает, а сжимать ничего не хочет. Если говорю - сожми базу - крутит секунд 10 и закрывает окно. Файлы остаются прежними. Если говорю - сожми лог (пробовал с разными опциями) - закрыват окно сразу и никакого результата
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Так его сначала обрезать надо
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Ээээ.....вроде ничего не надо обрезать.

    Исполнение скрипта

    Код:
    
    USE [ИМЯ_БАЗЫ]
    GO
    DBCC SHRINKFILE (N'ИМЯ_БАЗЫ_log' , 0, TRUNCATEONLY)
    GO
    
    
    в SQL Server Manager-е работает сразу после бэкапа базы
  15. TopicStarter Overlay
    Mark768
    Offline

    Mark768 Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29
    При попытке сократить размер лога выводится сообщение, что это сделать невозможно, т.к. запрашиваемый размер меньше имеющегося.

    Видимо, сначала нужно сжать, а потом сократить.

    Я правда никак не пойму, зачем нужна функция задания размера лога, если по достижению указанного размера база "встает". Логично былоб, задавая размер лога, заставлять автоматом сжимать файл для добавления новых транзакций.

    Замкнутый круг получается.

    Вот бы еще точно узнать, функции сжатия доступны при соединениях с базой. Пользователей в базе нет (на сервере 1С), однако, если осмотреть активные соединения (на SQL), то там сидит пользователь сервера 1С со статусом Slipping (всякие регламентные и фоновые задания отключены)
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Судя по
    указан НАЧАЛЬНЫЙ размер файла журнала БОЛЬШЕ, чем текущий размер. Т.е. сжатие журнала не требуется и не будет произведено.

    Размер журнала указывается в свойствах конкретной базы.

    Однако, к кардинальным мерам нужно прибегнуть. Отсоединить базу, удалить файл журнала транзакций. Подключить базу. Разобраться с начальным размером файла журнала.


    Функции сжатия доступны на ОН-ЛАЙН базах. Если в базе есть работающие пользователи, это, вроде бы, не помеха, во всяком случае задание по бэкапу и очищению лога транзакций отрабатывалось без ошибок.

Поделиться этой страницей