Ежедневное восстановление бэкапа sql в копию базы
Всем привет!
Ситуация: в sql 2012 есть план резервного копирования базы 1с - в понедельник создается полный бэкап, ежедневно в течении недели разностные и в течении дня бэкапы журнала транзакций.
Задача: Ежедневно перезаписывать копию базы, желательно средствами sql.
Посмотрел в интернете и по форумам, предлагается делать "restore database [base] from file [filename]", но у меня много файлов. Полный каждую неделю с новым именем (в имени указывается дата), то же самое и с остальными файлами.
Подскажите, пожалуйста, кто знает: как это можно реализовать?
Ситуация: в sql 2012 есть план резервного копирования базы 1с - в понедельник создается полный бэкап, ежедневно в течении недели разностные и в течении дня бэкапы журнала транзакций.
Задача: Ежедневно перезаписывать копию базы, желательно средствами sql.
Посмотрел в интернете и по форумам, предлагается делать "restore database [base] from file [filename]", но у меня много файлов. Полный каждую неделю с новым именем (в имени указывается дата), то же самое и с остальными файлами.
Подскажите, пожалуйста, кто знает: как это можно реализовать?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Подскажите, пожалуйста, кто знает: как это можно реализовать?
Так же как и создание бэкапов, только не с командой Backup database, а с командой Restore database. Как уже написали, рисованием скрипта с генерацией нужных имен для команды Restore database. Или вы думаете, что это сервер сам придумывает имена бэкапам?
(1)Эммм...
А почему бы не реализовать через планы обмена ...
создали узел и каждый день выгружайте накопленные изменения из рабочей ИБ + убивайте регистрацию дня нее же в копии, чтобы не копилась ...
Результат будет тот же, и колхозить с восстановлением не надо, и инструмент реализации знаком ))) ...
А почему бы не реализовать через планы обмена ...
создали узел и каждый день выгружайте накопленные изменения из рабочей ИБ + убивайте регистрацию дня нее же в копии, чтобы не копилась ...
Результат будет тот же, и колхозить с восстановлением не надо, и инструмент реализации знаком ))) ...
(1) Делаешь полный каждый день и хранишь последние 5-6.
Делаешь бекап различий каждый час и хранишь последние 2-3.
Ночью восстанавливаешь на копии с замещением последний полный и не заканчивая восстановления заливаешь последний бекап различий. Вуаля, с бекапами все в ажуре! Не понимаю, в чем здесь можно было запутаться?!
Делаешь бекап различий каждый час и хранишь последние 2-3.
Ночью восстанавливаешь на копии с замещением последний полный и не заканчивая восстановления заливаешь последний бекап различий. Вуаля, с бекапами все в ажуре! Не понимаю, в чем здесь можно было запутаться?!
Даже если имена файлов нужно определять по времени создания, а не по шаблону имени, то и тут решаемо.
Во-первых, если бэкапы через планы обслуживания делаются, в системных таблицах хранится некоторая история, откуда их можно достать.
Во-вторых, из Transact-SQL можно работать и с командной строкой и с COM-объектами.
В-третьих, с самим MSSQL можно работать из командной строки.
Во-первых, если бэкапы через планы обслуживания делаются, в системных таблицах хранится некоторая история, откуда их можно достать.
Во-вторых, из Transact-SQL можно работать и с командной строкой и с COM-объектами.
В-третьих, с самим MSSQL можно работать из командной строки.
Знаю что есть некие переменные, если возможно то какую нибудь конкретику в виде скрипта, как достать имена файлов из базы и как ими воспользоваться.
Например нашел, что можно получить имена файлов с помощью скрипта:
SEL ECT @@SERVERNAME AS ServerName ,
d.Name AS DBName ,
b.Backup_finish_date ,
bmf.Physical_Device_name
FR OM sys.databases d
INNER JOIN msdb..backupset b ON b.database_name = d.name AND b.[type] = 'D'
INNER JOIN msdb.dbo.backupmediafamily bmf ON b.media_set_id = bmf.media_set_id
WH ERE b.database_name = '[ИмяБазыДанных]'
ORDER BY b.Backup_finish_date DESC;
GO
Тут получится список файлов полных бэкапов, что как бы тоже недостаточно, т.к. еще нужны разностные. Даже если восстановить последний полный, то непонятно как эту конструкцию засунуть в "restore database fr om file ...". Просто воткнуть вместо трех точек наверняка не сработает.
Например нашел, что можно получить имена файлов с помощью скрипта:
SEL ECT @@SERVERNAME AS ServerName ,
d.Name AS DBName ,
b.Backup_finish_date ,
bmf.Physical_Device_name
FR OM sys.databases d
INNER JOIN msdb..backupset b ON b.database_name = d.name AND b.[type] = 'D'
INNER JOIN msdb.dbo.backupmediafamily bmf ON b.media_set_id = bmf.media_set_id
WH ERE b.database_name = '[ИмяБазыДанных]'
ORDER BY b.Backup_finish_date DESC;
GO
Тут получится список файлов полных бэкапов, что как бы тоже недостаточно, т.к. еще нужны разностные. Даже если восстановить последний полный, то непонятно как эту конструкцию засунуть в "restore database fr om file ...". Просто воткнуть вместо трех точек наверняка не сработает.
(7)
непонятно как эту конструкцию засунуть в "restore database fr om file ...". Просто воткнуть вместо трех точек наверняка не сработает.
Каую ЭТУ? Вы не умеете работать со строками? Вы не знаете как создать строку с текстом команды? Откуда уверенность про "наверняка"? Или вы просто без GUI никакой работы с сервером не представляете?
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот