Скрипт удобного восстановления базы 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    130225    VanDiesel1    137    

Управление конфигуратором в режиме агента с помощью python

Администрирование данных 1С Архивирование (backup) Скрипты автоматизации v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Управление конфигуратором 1С:Предприятие в режиме агента. Опыт применения с реализацией на языке python. Результат получен с использованием интерактивной сессии оболочки через invoke_shell().

06.08.2020    1021    Alex10166    2    

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

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

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

16.04.2020    5519    karamazoff    47    

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

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

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

07.10.2019    11423    DrZombi    49    

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

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

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

08.01.2010    26172    grum01    14    

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

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

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

11.08.2019    6500    Zlohobbit    25    

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

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

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

30.10.2018    12401    unclevad    16    

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

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

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

28.04.2018    10692    vsbronnikov    1    

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

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

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

03.10.2017    24591    konstanta_online    80    

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

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

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

19.05.2017    31384    MsDjuice    14    

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

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

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

10.10.2016    19280    Zebar    12    

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

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

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

01.08.2016    70365    dimisa    34    

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

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

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

21.08.2015    29897    METAL    25    

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

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

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

18.06.2015    18276    Prelude    14    

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

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

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

16.09.2013    49744    yurega    54    

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

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

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

18.07.2013    36851    lord_soth    45    

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

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

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

17.02.2013    258605    speshuric    81    

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

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

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

12.12.2012    16260    egorovntn    10    

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

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

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

02.10.2012    51700    djserega    77    

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

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

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

10.08.2012    18499    sergiobargio1    6    

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

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

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

01.08.2012    19228    sergiobargio1    8    

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

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

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

23.07.2012    127694    Vint88    19    

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

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

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

18.06.2012    30392    LexSeIch    4    

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

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

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

09.11.2011    27209    sinjevla    10    

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

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

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

21.10.2011    11354    elizarovs    3    

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

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

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

19.04.2011    7721    AActor    15    

1С и Postgres: Бэкап

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

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

17.12.2010    22686    alexcid    5    

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

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

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

25.10.2010    19675    daulberg    7    

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

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

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

19.02.2010    33773    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    61828    Mx00    146    

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

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

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

21.09.2009    22608    IamAlexy    26    

Архивация файлов при помощи программы 7-Zip

Архивирование (backup) v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Пример архивации при помощи командной строки для 7za.exe.

05.06.2009    22733    waol    12