8.х Резервное копирование БД MSSQL и 1C 8.1

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Lexus300, 10 мар 2010.

  1. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    подскажите пожалуйста, может есть уже стандартные решения для резервное копирования большого количества БД 1С 8,1 которые работают на MSSQL Server. или как организовать резервнвое копирование по расписанию? поделитесь опытом
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вам платные решения? или бсплатные нужны? Вообще Сам SQL можно настроить что бы Backup делал.
    статей в инете и тут на форму полно. вы по форуму запустите поиск. "Зерервное копирование и увидете, обсуждалось ни раз"
  3. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    HandyBackup пробовал - не понравилась...
    через T-SQL
    backup database NameBase to disk = 'c:\BackupMSSQL\NameBackup.bak' бекап делается быстро.. но и размер бэкапа получается практически идентичен самой базе... да и не удобно это, если много баз (в моём случае из за 30 шт). вручную запускать - не вариант, а делать планировщик заданий - не известно наперёд сколько время для бекапа займёт следующая база...
    так кто как решает проблемы по резервному копированию....
    p.s. по поводу поиск: тем всего три, и то там ничего конкретно не сказано...
  4. SergeyF
    Offline

    SergeyF Опытный в 1С

    Регистрация:
    1 фев 2007
    Сообщения:
    1.378
    Симпатии:
    0
    Баллы:
    26
    У меня HandyBackup на некоторых серваках в ошибку вылетает.

    В SQL 2000-2008 архивируется автоматически и сжимается (если поставить опцию "сжимать")
    У вас какой SQL?
  5. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    скрипт бека и сразу в архив..
    можете выгружать dt из командной строки
  6. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    можно узнать как?
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    смотрите тут

    Тут

    Там все написанно.

    bat ничек пишите и все
  8. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну его нафиг, этот dt.
    Достаточно одного раза, что бы он обратно не поднялся - и больше никогда не будешь делать таким образом бэкап.

    Самое нормальное решение: делать бэкап через скуль и потом скжимать файл. Все остальное - он лукавого :)

    Ибо бэкап из скуля почти в 100% случаев можно поднять, даже если база мертвая.
  9. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    поэтому и написал первое скрипт и в архив))
  10. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    написал такой вот скрипт
    Код:
    echo DBCC SHRINKDATABASE (BP_DEMO, 10) > backup.sql
    echo GO >> backup.sql
    echo EXEC sp_dropdevice 'MYBACK', 'DELFILE' >> backup.sql
    echo GO >> backup.sql
    echo EXEC sp_addumpdevice 'disk', 'MYBACK', 'C:\BP_DEMO_BACK.BAK' >> backup.sql
    echo GO >> backup.sql
    echo BACKUP DATABASE BP_DEMO TO MYBACK >> backup.sql
    echo GO >> backup.sql
    
    
    на выходе есть готовый файл sql
    а потом чем его выполнять через командную строку?
    в MSSMS скрипт выполняется... бэкап на выходе есть
    по идеи надо бы выполнять тем же MSSMS но только с параметрами... вот только с какими?
  11. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    ну что, добил эту задачу до логического конца
    в итоге сделал через батник
    вот код
    Код:
    set name_base=BP_DEMO
    set name_base_backup=BP_DEMO.bak
    
    echo DBCC SHRINKDATABASE (%NAME_BASE%, 10) >> backup.sql
    echo GO >> backup.sql
    echo EXEC sys.sp_dropdevice 'MYBACK', 'DELFILE' >> backup.sql
    echo GO >> backup.sql
    echo EXEC sys.sp_addumpdevice 'disk', 'MYBACK', 'C:\%NAME_BASE_BACKUP%' >> backup.sql
    echo GO >> backup.sql
    echo BACKUP DATABASE %NAME_BASE% TO MYBACK >> backup.sql
    echo GO >> backup.sql
    
    SET NAME_FILE_BACKUP=C:\backup.sql
    
    start /wait sqlcmd -S NameServer -Usa -PPassword -i %NAME_FILE_BACKUP%  -o C:\Output.txt > nul
    
    7za.exe a -tzip %NAME_BASE%.zip %name_base_backup% -mx7 -mmt > nul
    
    del *.sql
    del *.bak
    
    для большого количества баз можно написать как батник так и утилиту а название баз брать из системной таблицы...
    p.s. после выполнения скрипта бэкап был сжат со 140 метров до 90, т.е. сжатие 50 метров - это на мой взгляд хорошо...
    для тех кого одна БД и для неё необходимо настроить запланированные задания, хорошо описано тут
    народ, скажите, что вы думаете по тому методу что я написал?
  12. TopicStarter Overlay
    Lexus300
    Offline

    Lexus300

    Регистрация:
    8 мар 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    доработал предыдущий вариант
    теперь выглядит так
    Код:
    @echo off
    cls
    Echo ***********************************************
    echo *                                             *
    echo *   Резервирование базы данных MSSQL          *
    echo *   Разработчик: Савельев Андрей г.Тобольск   *
    echo *   2010 г. версия 1.1 от 19.03.2010          *
    echo *                                             *
    Echo ***********************************************
    
    rem -- Название базы
    set name_base=BaseName
    
    rem -- названиа бэкапа
    set name_base_backup=%name_base%.bak
    
    rem -- Настраиваем параметры входа
    set NAME_SERVER=ServerName
    set ICS_USER=sa
    set ICS_PASSWORD=Your password
    
    setlocal
    
    rem --создаём sql файл для резервирования
    echo EXEC sys.sp_dropdevice 'MYBACK', 'DELFILE' >> backup.sql
    echo GO >> backup.sql
    echo EXEC sys.sp_addumpdevice 'disk', 'MYBACK', '%CD%\%NAME_BASE_BACKUP%' >> backup.sql
    echo GO >> backup.sql
    echo BACKUP DATABASE %NAME_BASE% TO MYBACK >> backup.sql
    echo GO >> backup.sql
    
    SET NAME_FILE_BACKUP=backup.sql
    
    echo Резервирование БД: %NAME_BASE%
    sqlcmd -S %NAME_SERVER% -U%ICS_USER% -P%ICS_PASSWORD% -i %NAME_FILE_BACKUP% -o %CD%\Output.txt > nul
    if  not "%ERRORLEVEL%"=="0" (
    echo Ошибка резервирования БД. Код ошибки: %ERRORLEVEL%  
    goto failed;
    )
    
    echo Резервирование закончено успешно.
    echo Сжатие файла.Старт....
    
    %~dp07za.exe a -tzip %NAME_BASE%_%DATE%.zip %name_base_backup% -mx7 -mmt > nul
    if  not "%ERRORLEVEL%"=="0" (
    echo Ошибка. Код ошибки: %ERRORLEVEL%  
    goto failed;
    )
    )
    goto ok
    
    
    :failed
    rem Выдача ошибки общей
    echo Резервирование БД прошло неудачно
    echo обратитесь в службу поддержки
    goto end
    
    :ok
    echo Резервирование БД %NAME_BASE% завершено успешно!
    goto end
    
    :end
    del *.bak
    del *.sql
    
    p.s.
    народ, пишите отзывы!!!
  13. djrust
    Offline

    djrust

    Регистрация:
    25 окт 2010
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Напишите еще как восстанавливать!
    Я так понимаю на 7 тоже пойдет?
  14. BVB_berserk
    Offline

    BVB_berserk Опытный в 1С

    Регистрация:
    30 янв 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Зачем через планировщик?
    Сделай один Maintenance Plan, в котором выбери те базы, которые нужно бэкапить.

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