Скрипт удобного восстановления базы MSSQL при дифференциальном резервировании

Публикация № 80477

Администрирование - Администрирование данных 1С - Архивирование (backup)

Если у Вас база на MSSQL и Вы пользуетесь разностными бекапами, то, скорее всего, столкнулись с тем, что поднять базу/копию базы из имеющихся резервных файлов  не столь удобно, как того хотелось бы.
В этой статье приведен скрипт по теме.

Для начала немного истории.

Так сложилось, что в моей компании резервированием баз 1С, которые у нас лежат на MSSQL, занимаюсь лично я. Вначале, пока база еще не так сильно разрослась, все было просто: каждую ночь выгружался dt-файл. Этот путь не понравился по 3-м причинам: долго восстанавливается, при бекапе в базе не должно быть пользователей, на диске временного каталога должно быть место, расное файлу бекапа.

Время шло, база росла, было решено делать бекап базы MSSQL. Но банный файл оказался гораздо больше файла dt. Пришлось засесть за интернет и узнать как реализовать и потом реализовать на практике разностный бекап. Но так как у нас есть команда программистов, то для каждого программиста выделили еще и по паре тестовых баз.

Через некоторое время мне надоело заниматься копипастом постоянно изменяя в скрипте имя базы и добавляя блоки для каждого файла разностного бекапа в итоге было потрачено немного времени и получился следующий скрипт:


--Здесь ничего не трогаем
declare @SQLString nvarchar(4000), @TableName nvarchar(16)
declare @t table (fname NVARCHAR(50))
DECLARE @counter INT, @backupfile NVARCHAR(50)
SET @counter = 0

---------------------------------------------------------------------------
-- Здесь изменяем имя базы

set @TableName = N'Ins_3_3'
-- Здесь вставляем необходимое количество бекапов.

-- Вначале полный, потом все разностные
INSERT INTO @t (fname) VALUES ('2011-01-16_ins.bak')
INSERT INTO @t (fname) VALUES ('2011-01-17_ins_diff.bak')
INSERT INTO @t (fname) VALUES ('2011-01-18_ins_diff.bak')

---------------------------------------------------------------------------
--Далее ничего не трогаем

DECLARE bkf CURSOR LOCAL FAST_FORWARD FOR SELECT * FROM @t;

OPEN bkf;
FETCH bkf INTO @backupfile;
WHILE @@FETCH_STATUS=0
BEGIN
IF @counter = 0
BEGIN
set @SQLString = N'restore Database ' + @TableName + '
FROM DISK = N''N:\Backup1C\' + @backupfile + '''
with NORECOVERY,
move ''Ins81'' to N''F:\SQLBases\Data\' + @TableName + '.mdf'',
move ''Ins81_log'' to N''F:\SQLBases\Data\' + @TableName + '_Log.ldf'',
STATS = 5'
END
ELSE
BEGIN
set @SQLString = N'restore Database ' + @TableName + '
FROM DISK = N''N:\Backup1C\' + @backupfile + '''
with NORECOVERY'
END
exec sp_executesql @SQLString
set @counter = @counter + 1
FETCH bkf INTO @backupfile;
END;
CLOSE bkf;
DEALLOCATE bkf;
set @SQLString = N'restore Database ' + @TableName + '
with RECOVERY'
exec sp_executesql @SQLString


Надеюсь, скрипт будет полезным.

Новая база будет создаваться по пути F:\SQLBases\Data\. Исправьте путь согласно своему серверу.

Бекапы у меня лежать в N:\Backup1C\. Естественно этот путь нужно тоже поменять.

Если что-то не понятно - спрашиваем.

Специальные предложения

См. также

Восстановление SQL базы 1С 8.2. рухнувшей во время сохранения конфигурации. Промо

Тестирование и исправление Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

При обновлении конфигурации вылетела 1С. После чего наотрез отказалась входить в базу. При этом в конфигураторе выдавалось сообщение "Внимание!!! При обновлении данных, после последней реструктуризации, произошла критическая ошибка. Повторить обновление?" Потом выходило сообщение "Обнаружена незавершённая операция сохранения конфигурации. Для продолжения необходимо завершить операцию". Горела кнопка Ок - на этом работоспособность конфигуратора и базы заканчивалась.

08.02.2012    127673    0    VanDiesel1    137    

Выгрузка в dt на сервере 1С по расписанию с завершением соединений и подключением к консоли сервера через com

Архивирование (backup) Администрирование данных 1С v8 Россия Бесплатно (free)

Была задача настроить по расписанию выгрузку серверной базы в dt, готового решения не нашел, делюсь, может, кому пригодится.

16.04.2020    4221    0    karamazoff    46    

Тонкая настройка ежедневного резервного копирования базы данных 1С средствами SQL ver. 2014 (SP3) - 12.0.6024.0 (X64)

Архивирование (backup) v8 Россия Бесплатно (free)

Хочу вам предложить небольшой пример, как можно реализовать резервное копирование 1С-ых баз данных средствами SQL. Данный материал не претендует на пулитцеровскую премию. Но возможно кому-то будет интересно узнать, что-то новенькое. Данный материал для резервного копирования только одной базы данных. А именно, если у вас 20-ть баз, то вам придется создавать 20-ть планов обслуживания для каждой базы индивидуально. (Слава разработчикам SQL, они разрешили копировать блоки из одного плана в другой, вам остается только произвести небольшую настройку для каждого скопированного блока - некоторые настройки блоков сбрасываются и выставляются значением по умолчанию и остаются неактивными)

07.10.2019    9572    0    DrZombi    49    

Быстрое копирование таблиц большого размера и/или с большим числом строк, на примере регистра сведений (для MS SQL)

Архивирование (backup) v8 Бесплатно (free)

Моментальное восстановление затертого регистра сведений из бекапа посредством SQL.

11.08.2019    5655    0    Zlohobbit    25    

К вопросу об архивации баз 1С (и снова, и снова...) Промо

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Из своего опыта хочу напомнить о самом простом способе архивации баз типовыми средствами 1С и планировщика Windows.

08.01.2010    25554    0    grum01    14    

Настройка резервного копирования (резервирования) баз данных 1С: Предприятие на MS SQL Server

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Настройка резервного копирования (резервирования) баз данных на "бюджетной" версии 1С Предприятие под MS SQL Server. Используется пример MS SQL Server 2008 R2 под Windows. Для малых и средних предприятий, исключая производственные и торговые, так как тестирование на них не проводилось.

30.10.2018    11737    0    unclevad    16    

Работа с конфигуратором по протоколу SSH (не в режиме агента)

Архивирование (backup) Администрирование данных 1С v8 Бесплатно (free)

Рабочее решение запуска пакетного скрипта конфигуратора 1С через SSH-клиента.

28.04.2018    10228    0    vsbronnikov    1    

Резервное копирование "онлайн" клиент-серверных баз в dt (не отключая пользователей)

Архивирование (backup) v8 Бесплатно (free)

Как реализовать резервное копирование клиент-серверных баз 1с в формат dt, не отключая пользователей. Рассматривается способ, делающий резервирование наименее заметным для пользователей и серверного оборудования.

03.10.2017    23487    0    konstanta_online    80    

Настройка зеркалирования базы для MS SQL

Архивирование (backup) Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Очень удобный способ, когда нам нужна не просто резервная копия, а "горячая" замена серверов.

19.05.2017    29628    0    MsDjuice    14    

Рекомендации по организации резервного копирования для систем с Windows Server / Windows SQL Server

Архивирование (backup) v8 Бесплатно (free)

В данной статье мы рассмотрим работу с резервными копиями базы данных 1С, а также некоторые приемы, оптимизирующие работу с резервными копиями.

10.10.2016    18721    0    Zebar    12    

Резервное копирование и восстановление базы 1С средствами PostgreSQL

Архивирование (backup) v8 Бесплатно (free)

Алгоритм резервного копирования баз 1С: 8 средствами PostgreSQL.

01.08.2016    66724    0    dimisa    33    

Как я восстанавливал разрушенную базу

Архивирование (backup) Распределенная БД (УРИБ, УРБД) Тестирование и исправление v8 1cv8.cf Бесплатно (free)

УТ10.3 на Платформе 8.2 на базе MSSQL была разрушена после попытки её восстановить после неудачного динамического обновления. Таблица Config целевой базы была заменена на содержимое таблицы Config от другой рабочей базы. Но на самом деле конфигурации у них существенно отличались, поэтому после таких действий целевая база рухнула окончательно. Что же делать?

21.08.2015    29188    0    METAL    25    

Просто и сердито. Архивирование (backup) типовых конфигураций 1С 8.2, 8.3

Архивирование (backup) v8 1cv8.cf Бесплатно (free)

После эксплуатации различных "бесплатных" обработок и скриптов решил написать свой cmd-файл для ежедневного архивирования баз 1С. Работает на конфигурациях, где есть процедуры "ЗавершитьРаботуПользователей" и "РазрешитьРаботуПользователей" (т.е. во всех типовых, в нетиповые данные модули можно скопировать из типовых). Сохраняет файлы как локально так и на удаленном файловом сервере. Автоматически удаляет старые архивы и копирует на удалённый сервер отсутствующие. Расписание задается установкой соответствующего задания (запуска cmd-файла по времени) в планировщике задач Windows. Для борьбы с зависшими сеансами, рекомендуется настроить в режиме конфигуратора параметры информационной базы: "Время засыпания пассивного сеанса" и "Время завершения спящего сеанса".

18.06.2015    17736    0    Prelude    14    

Как выгрузить базу средствами 1С, не выгоняя пользователей. Делаем невозможное.

Архивирование (backup) Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

В 1С:Предприятии 8.2 есть ограничение на выгрузку базы в формате DT. Выгрузить базу можно, только если в ней нет активных пользователей. В этой статье поделюсь способом, как обойти это ограничение и сделать невозможное.

16.09.2013    48051    0    yurega    54    

Восстановление SQL базы 1С 8.2. после неудачного сохранения конфигурации

Архивирование (backup) Администрирование данных 1С v8 Россия Бесплатно (free)

При динамическом обновлении, в процессе сохранения конфигурации, вылетела база 1С и отказалась заходить в режим Конфигуратора, выдавая сообщение "Внимание!!! При обновлении данных, после последней реструктуризации, произошла ошибка. Повторить обновление?", если ответить утвердительно, то появлялось сообщение "Обнаружена незавершенная операция сохранения конфигурации. Для продолжения работы необходимо завершить операцию.", после чего Конфигуратор закрывался.

18.07.2013    36180    0    lord_soth    45    

Скрипт - выгонялка пользователей + резервная копия базы.

Архивирование (backup) v8 1cv8.cf Бесплатно (free)

В Клиент-серверном режиме работы базы часто возникает необходимость выгонять пользователей чтобы сделать обновление, резервные копии и т.п. Для ленивых, которым неудобно всех выгонять "руками" или ждать окончания рабочего дня, предлагается простой скрипт, который всё сделает за вас.

26.02.2013    24603    0    tystik    11    

Резервное копирование 1С средствами MS SQL.

Архивирование (backup) v8 1cv8.cf Бесплатно (free)

В этой статье описано самое обычное резервное копирование ИБ 1С при помощи инструментов MS SQL Server 2008 R2, объяснено почему следует делать именно так, а не иначе, и развеяно несколько мифов.

17.02.2013    248408    0    speshuric    81    

Хранение удаленных документов в отдельной базе. Часть 1.

Администрирование данных 1С Архивирование (backup) v8 1cv8.cf Бесплатно (free)

Резервное хранение данных. Пример работы с внешними источниками данных. Работа с файлами. Подписка на событие. Работа с XML файлами. Сериализатор XDTO.

12.12.2012    15978    0    egorovntn    10    

Восстановление файловой версии базы данных *.1CD после ошибки динамического обновления.

Сервисные утилиты Архивирование (backup) Администрирование данных 1С Тестирование и исправление v8 1cv8.cf Бесплатно (free)

Восстановление работоспособности файл-серверной базы данных (файл *.1CD) после критической ошибки, возникшей в результате динамического обновления с последующим предупреждением "Внимание!!! При обновлении данных, после последней реструктуризации, произошла ошибка. Повторить обновление?".

02.10.2012    50499    0    djserega    77    

Автоматическое регулярное разворачивание оперативных бэкапов (совсем просто) в MS SQL 2008

Архивирование (backup) v7.7 v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

В работе регулярно возникает необходимость протестировать поведение программы на копии рабочей базы с актуальными данными

10.08.2012    18067    0    sergiobargio1    6    

Регулярные оперативные копии рабочих баз 1С с помощью MS SQL 2008

Администрирование данных 1С Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

В течение дня необходимо производить отладку "допилов" на свежих копия рабочих баз. Также необходимы актуальные копии и для экспериментов, в том числе и пользователям. На этом замечательном ресурсе есть много полезных публикаций с различными вариантами, как это сделать. В одном из них предлагается использовать инструмент мгновенных снимков баз, которые возможно выполнить только в версии Express Edition. В этом посте очень простой вариант, не требующий дорогостоящей версии MS SQL

01.08.2012    18974    0    sergiobargio1    8    

Пошаговая инструкция по процедуре восстановления базы SQL. SQL Server 2008

Архивирование (backup) Администрирование данных 1С v8 1cv8.cf Россия Бесплатно (free)

Пошаговая инструкция по по процедуре восстановления бэкапа SQL 2008.

23.07.2012    122342    0    Vint88    19    

Автоматизация создания резервных копий в MS SQL Express Server

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

В версии Microsoft SQL Server 2005/2008/2008R2 Express Edition серверах нет стандартных средств создания резервных копий баз данных по расписанию. Восполнить этот пробел поможет простое решение

18.06.2012    29809    0    LexSeIch    4    

Бэкап 1С:Предприятие 8.х

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Рекомендации по резервному копированию. Бесплатные программы для бэкапа Egida Backup, Effector saver 3, xStarter.

09.11.2011    26729    0    sinjevla    10    

Резервное копирование чеков во внешние файлы и их восстановление

Архивирование (backup) v8 Розница Россия Бесплатно (free)

Решение проблемы восстановления потерянных кассовых чеков после восстановления поврежденной базы розницы.

21.10.2011    11082    0    elizarovs    3    

Архивное копирование 1С8 автоматически и ежедневно

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Выложил ввиду "молодости и горячести" ХД и критики со стороны, дабы не спотыкаться в дальнейшем =)

19.04.2011    7482    0    AActor    15    

1С и Postgres: Бэкап

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Для начала пару слов о том, зачем и когда он нужен. Ни для кого не секрет, что сервер это не просто компьютер, а надежный компьютер! Поэтому, если он не сломался в первую неделю после запуска, то не сломается еще очень долго. И поэтому у вас всегда есть возможность какое-то время оставаться вовсе без резервной копии

17.12.2010    22381    0    alexcid    5    

Выгрузка ИБ 1С8 на сервере 1С:Предприятие

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Выгрузка ИБ 1С8 на сервере 1С:Предприятие стандартными средствами ОС и 1С. Без всяких хитростей.

25.10.2010    19265    0    daulberg    7    

Авто-бэкапер 7.7 и 8.1

Архивирование (backup) v7.7 v8 Россия Бесплатно (free)

Программа позволяет выполнить последовательную выгрузку из всех баз 1С, указанных в ini-файле. Кроме того, позволяет принудительно убить все процессы 1С перед выполнением выгрузки. Для версии 7.7 производится подчистка файлов lck. Формирует файлы выгрузки с уникальными именами. Бэкап каждой последующей базы выполняется только после бэкапа предыдущей. По завершении программа выключается Примечание: выгрузка стандартная, формируется архив с файлами 1Cv77.dat, 1Cv7.MD, users.usr (7.7) и файл *.dt (8.0, 8.1) Подробное описание в readme.

22.02.2010    21933    0    Abadonna    19    

Как выгрузить не всю конфигурацию в файл, а только изменения?

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Хочу поделиться одним способом сохранения не всей конфигурации в файл, а только изменений. Способ довольно заморочный, но он позволяет сохранить любые изменения конфигурации в файл, размер которой уменьшится, скажем, к 300 KB, по сравнению с размером конфигурации в 60 MB. Этот способ эффективен, когда у клиента очень слабое соединение с интернетом или оплачивается помегабайтно.

19.02.2010    32519    0    modul    78    

Архивирование баз данных 1С и не только... (настройка бесплатной программы Cobian Backup 9)

Архивирование (backup) v7.7 v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

В данной статье описывается создание системы архивирования на основе бесплатной программы Cobian Backup 9 (http://www.cobiansoft.com/cobianbackup.htm)

14.01.2010    60583    0    Mx00    146    

Архивация базы 1С-Предприятие

Разработка внешних компонент Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Используем стандартный планировщик Windows и файл Visual Basic Script с файлом настроек, для плановой выгрузки базы данных.

29.12.2009    10063    0    alves    4    

SQL2005. Выгружаем базу средствами 1С не выгоняя пользователей.

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Очередной велосипед на тему архивации баз данных 1С средствами 1С.

21.09.2009    22214    0    IamAlexy    26    

Автоархивирование... очередное

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Набор .bat файлов для автоматизации процессов: тестирование базы, выгрузка в DT, генерация из из DT в 1CD? архивирование. для файловой и SQL версии по выбору

11.09.2009    10415    0    dvv01    6    

Архивирование файловой базы 1С 8 каждый день, не выгоняя пользователей из базы, и не нужно знать пароль администратора

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Архивирование файловой базы 1С 8 в архив zip каждый день посредством прописывания в планировщике скрипта.

28.08.2009    24183    0    maxx    29    

Скрипт VBS для автоархивации баз 8.1 на SQL. (Нагло отключает все сеансы.)

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Скрипт для автоархивации в файлы в формате "ZUP2009_16_04_2009_09_25_55.dt" (Дата и время архивации.) + его Лог файл в формате "ZUP2009_Log_16_04_2009_09_25_55.log" (Дата и время архивации.)

22.04.2009    15552    0    rebuzx    28    

Обработка создания файла запуска архива

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Создание командного файла запуска для последующего использования при автосохранении информационных баз 1С

22.02.2009    10506    0    Kyrales    9    

Копирование файлов из 1с 8.1

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Копирование файлов по расписанию из 1с 8.1

20.11.2007    9698    0    programmer-1c2007    3    

Архиватор для баз 1С

Архивирование (backup) v7.7 v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

Архивирует базы 1С или любые другие в указанный каталог. Запуск возможен раз в день, раз в неделю или .... Быстрая архивация 100 мег за 3 мин. И еще всяко

15.08.2007    10897    0    ahmet    15    

1С 8.0: автосохранение 8.0 (VB6)

Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Утилита для выполнения автосохранения для 1С 8.0 для Win2003/Xp

19.04.2007    5377    0    pippa    22