Конфигурация предназначенная для резеврного копирования баз SQL Server. Может использоваться как автономно, так и объединяться с любой конфигурацией. Код полностью открыт и доступен для редактирования.
В конфигурацию включен подробный HELP, вызываемый из справочника «Информационные базы».
Предназначение: Использование как основной/резервный механизм архивации БД. Использование при невозможности использования стандартных механизмов SQL Server (например, в Express версии). Удаленное создание и удаление резервных копий, настройка архивации (в случае работы через Web-сервер).
Возможности:
1. Настройка резервного копирования как одной, так и нескольких баз по индивидальному расписанию
2. Возможность настройки строки соединения и SQL-запроса архивации БД.
3. Возможность указания произвольного имени файла архива, в том числе и вычисляемого. (Например, зависящего от даты)
4. Возможность архивации выгруженного файла с помощью RAR и встроенного в 1С механизма ZIP-архивации. Возможность установки пароля для файла.
5. Ведение истории выгруженных файлов.
Об ошибках просьба сообщать в личку. Несмотря на то, что писалась конфигурация под SQL Server, возможно она будет и работать и с другими СУБД (для этого можно настроить строку соединения и, возможно, скрипт выгрузки). Эта возможность не тестировалась. О таком опыте — успешном или неудачном просьба также сообщать в личку.
upd: ver. 1.1 : Исправлена ошибка прерывания исполнения запроса по таймауту и добавлена возможность устанавливать таймаут запроса самостоятельно.
ver. 1.4 Добавлена возможность очистки лог-файла после создания резервной копии. Добавлена гиперссылка для просмотра справочной информации прямо из конфигурации.
Оригинальная идея. Надо будет протестировать.
Под SQL Server имеется ввиду MS SQL Server?
Да, именно MS SQL Server :). Разработка проверялась на 2008, 2008 R2, 2005
Протестировал. Всё отлично работает.
Только надо наверное переименовать «папка для выгрузок» в «папка для выгрузок (на сервере СУБД)», а то я backup запустил на локальной машине и указал соответственно папку свою, а там появился только пустой архив, а бекап лежал в такой же папке но на сервере.
Да, возможно, в следующей версии я переименую этот реквизит. Я знаю об этой особенности работы и написал о ней в хелпе и прилагающемся описании. Спасибо)
Да, забыл сказать. В случае, если база создается в файловом варианте, то её нужно создавать на сервере, потому что выполнение команды архивации происходит в среде машины, на которой запущен процесс, соответственно заархивировать базу она не сможет — будут различаться папки на сервере (куда сохраняется архив) и на клиенте (откуда архиватор пытается заархивировать его). Проблему можно также решить расшариванием папки, куда делается архив и указанием сетевого пути к ней.
А что происходит с пользователями, которые на момент архивации работают в базе? Отключаются?
(6) taurus_, SQL же всё делает на горячую, ну может кроме переименования баз )
Нет, ничего не происходит. При копировании средствами SQL Server пользователи не отключаются
Тысяча извинений! Всё сделал по инструкции, но при попытке сделать архивную копию базы выдаётся сообщение:
Ошибка создания резервной копии: {ОбщийМодуль.БКП_Сервер.Модуль(211)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания истекло
Добрый день!
Какого размера у вас база SQL? Судя по всему, тут какая-то ошибка по таймауту.
Немногим больше одного гигабайта. База совсем небольшая ведь, но архивация не проходит. Архивный файлик создаётся, но практически сразу «удаляется» и выдаётся сообщение об ошибке архивации.
Интересная штуковина, + заочно. Надо будет ознакомиться на досуге:-)
Я посмотрю в чем может быть причина такой ошибки как у вас, либо поправлю либо предложу решение)
Ошибка была из-за таймаута исполнения запроса для ADO — по умолчанию 30 сек. Исправил в новой версии.
(1) hrip,
а что — есть еще какой-то SQL с названием SQL Server? 🙂
__________________________________________
Народ, когда научитесь использовать средства программ — а не изобретать костыли?
MS SQL прекрасно настраивает бэкапы любых баз, по расписанию и куда угодно. Плюс — еще и регламентные операции с базой.
Один раз настроил — и получай альтернативный бэкап хоть каждую минуту.
(15) AlexO, в чем смысл придирок к словам то? 🙂
Или по вашему про PostgreSQL, IBM DB2, MySQL и т.д. нельзя написать что это SQL Server?
а вот MS SQL Server — это как раз название конкретного программного продукта от Майкрософт.
Ну и в немного в защиту автора.
Никто же не заставляет вас использовать эту разработку если она вам не нравится?
А вот ознакомиться с технологией, как автор использует соединение с СУБД и делает бекапы, вредно точно никому не будет.
Так что автору однозначно плюс!
Ну вы почитайте внимательно описание конфигурации и поймете, что я не призываю использовать её вместо стандартных средств 🙂 Ситуации разные бывают и разные средства могут использоваться.
(17) Огромное вам спасибо! После исправления проблемы с таймаутом всё заработало, как часы!
Протестировал работает спасибо, с таймаутом поначалу тоже была заморочка.
Тысяча извинений! Это опять я 🙁 Настроил автоматическое резервное копирование по расписанию. Однако по какой-то причине базы автоматически не резервируются. Подскажите, пожалуйста, что я делаю не так?
Скажите, у вас файловая ИБ или серверная
(21) Серверная
В базе случайно не стоит «Блокировка регламентных заданий»? Это можно посмотреть в консоли кластера серверов 1С:Предприятия
(23) Нет, блокировка регламентных заданий была отключена (не включалась) ещё на этапе настройки сервера 1С.
Там в конфигурацию включена простенькая консоль для просмотра активных заданий. Посмотрите, есть ли там регламентное задание и активно ли оно. Можно также проверить расписание. При выполнении регламентного задания остаются записи в журнале регистрации, можете ещё и туда заглянуть на предмет того, когда проходили регламентные задания и что происходило в них.
Да, конечно, регламентное задание есть и активно, но не выполняется. В журнале регистрации только записи о резервированиях, сделанных вручную (нажатием соответствующей кнопки). Расписание проверял и перепроверял. Беда какая-то!
Ну это тогда точно у вас проблема с планировщиком заданий. Проверьте в консоли кластера. Настройка задается для каждой базы в отдельности. При создании базы для резервного копирования могли случайно поставить/забыть снять галку блокировки заданий.
Вот такуюhttp://infostart.ru/public/121407/ систему посмотри значительно функциональнее. Не ново!
(28) Гость, 12000 стоит та разработка, а эта — бесплатная. Вы наверное свою разработку рекламировать пытаетесь? 🙂
Может она того стоит! ) Думаю за демкой можно к разработчику обратиться.
(30) Гость, Обратитесь, попробуете, можете мне в личку написать о результатах:).
Та конфигурация, судя по описанию, не делает резервную копию базы SQL, а выгружает базу средствами 1С. Это применимо далеко не во всех случаях, занимает гораздо больше времени и восстановленная из такой резервной копии база не будет полной копией существующей — будет иметь другие индексы итд итп. Так что оптимальный вариант, если база серверная — именно выгрузка средствами СУБД, а не 1С.
Там заявлено больше функций чем у меня, но я и не претендую на то, что моя конфигурация — самая функциональная. Доработки функциональности планируются, но не скоро и они в первую очередь будут направлены на поддержку других СУБД, потому что именно в этом суть разработки.
Проде как SQL сам деалет копии и снапшоты, зачем еще что-то придумывать?
(32) Гость, Я на этот вопрос выше где-то отвечал.
Ошибка подключения: {ОбщийМодуль.БКП_Сервер.Модуль(379)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
вот такая ошибка, что делать?
(34) wert453, Нужно проверить пользователя, пароль, правильность написания пути для подключения к серверу.
так — отсюда по подробнее,
у меня на сервере крутится база — см. картинку.
Мне вместо базы — Прописать «База1» , имя «Серв1»
или можно указать путь к базе?
Аналогичная проблема: при нажатии кнопки «проверить соединение» та же ошибка.
(36) wert453, Тут небольшая путаница в понятиях. В качестве сервера нужно указывать сервер, на котором крутится SQL, лучше также в явном виде указать путь к instance SQL сервера. Имя базы, пользователя и пароль также относятся к SQL серверу. Т.е. в виде сервера должно быть что-то вроде
SERVER или SERVERMSSQLSERVER, где MSSQLSERVER — имя инстанса.
В качестве базы указывается имя базы — BASE, например.
пользователь (если выбрана аутентификация SQL) — обычно sa. Пароль — пароль входа SQL.
Имя сервера и базы 1С не обязательно должны совпадать с именем базы и сервера SQL, но обычно их настраивают одинаковыми, отсюда и путаница.
Теперь ясно. спасибо
Вот бы если в конфигурации еще была возможность восстановления из файлов бэкапа, было бы замечательно
(40) vi.rus, Планируется в будущем )
Объясните пожалуйста, по подробней на счет пути каталога «Папка для выгрузок»:
— у меня пишет что выгрузка произошла успешно, но архива в папке нет — даже пустого, а в «истории резервных копий» пишет что архив сформировался тут же и размер его «0»
Ошибка подключения: {ОбщийМодуль.БКП_Сервер.Модуль(379)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Ошибка входа пользователя «admin».
КАК ВЫЛЕЧИТЬ
все разобрался
Хм, интересно, скачаю потестировать себе, затея прикольная.
Автоматически (по указанному расписанию) не создает архив, по кнопке «создать сейчас делает».
Как нужно заполнять закладки «настройки автоматического сохранения» — все четыре можно заполнить и всеравно должен работать, или по одной как-то?.. всё уже перепробовал.
Спасибо автору , сильно пригодилась, встроил строку подключения в свою конфигурацию.
Обратите внимание на права доступа к папкам с архивами пользователя под котором запущена служба sql , из за этого архивация можеn не проходить.
Кто может поделиться а то на счету 0 а то очень нужно.
Есть вопрос а как открыть исходный кот
Автору респект !!!!! отличная работа ! Спасибо огромное!!!!
«Использование при невозможности использования стандартных механизмов SQL Server (например, в Express версии).»
Данная разработка чем лучше двух файлов
один с расширением backup.sql, в котором строки вида
BACKUP DATABASE [Base_naim] TO DISK = N’i:sql_backupBase_naim.bak’ WITH NOFORMAT, NOINIT, NAME = N’Base_naim-Полная База данных Резервное копирование’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Второй backup.bat со строкой вида
sqlcmd -S SERVER -E -i I:sql_backupackup.sql
Это все для Express версии.
Работает хорошо! Только один вопрос, не думали добавить возможность ввода данных доступа к ресурсу, куда копировать данные? Для копирования на сетевой ресурс.