Ежедневное восстановление бэкапа sql в копию базы

1. Денис Николаев (avalakh) 169 29.12.16 13:13 Сейчас в теме +5 $m
Всем привет!

Ситуация: в sql 2012 есть план резервного копирования базы 1с - в понедельник создается полный бэкап, ежедневно в течении недели разностные и в течении дня бэкапы журнала транзакций.

Задача: Ежедневно перезаписывать копию базы, желательно средствами sql.

Посмотрел в интернете и по форумам, предлагается делать "restore database [base] from file [filename]", но у меня много файлов. Полный каждую неделю с новым именем (в имени указывается дата), то же самое и с остальными файлами.

Подскажите, пожалуйста, кто знает: как это можно реализовать?
Вознаграждение за ответ
Показать полностью
Найденные решения
17. Андрей Моторико (motorsoft) 2 07.03.17 12:53 Сейчас в теме +10 $m
Остальные ответы
2. Леонид Бугерчук (Caspersky) 29.12.16 16:16 Сейчас в теме
3. Леонид Бугерчук (Caspersky) 29.12.16 16:48 Сейчас в теме
(2) В Sql можно реализовать любую логику,
формат имени файлов я так понимаю неизменен,
пишите скрипт и в планировщик...
4. Сергей Сизов (sssss_aaaaa_2011) 29.12.16 17:03 Сейчас в теме
(1)
Подскажите, пожалуйста, кто знает: как это можно реализовать?
Так же как и создание бэкапов, только не с командой Backup database, а с командой Restore database. Как уже написали, рисованием скрипта с генерацией нужных имен для команды Restore database. Или вы думаете, что это сервер сам придумывает имена бэкапам?
5. Сан Саныч (herfis) 254 29.12.16 17:09 Сейчас в теме
(1) А в чем проблема? filename ведь и строковой переменной может быть, которую легко собрать по требуемому шаблону. Функций по работе с датами/строками в TransactSQL поболе, чем в 1С.
9. Леонид Бугерчук (Caspersky) 21.01.17 14:09 Сейчас в теме
(1)Эммм...

А почему бы не реализовать через планы обмена ...
создали узел и каждый день выгружайте накопленные изменения из рабочей ИБ + убивайте регистрацию дня нее же в копии, чтобы не копилась ...
Результат будет тот же, и колхозить с восстановлением не надо, и инструмент реализации знаком ))) ...
12. Роман (zoomzd1234) 21.01.17 15:04 Сейчас в теме
(1) Лучше На пример MS SQL Server 2012 Настройки все сделать с помощью SQL Management Studio. Для начала сделаешь устройство резервного копирования можно и без него, но для удобства и правильнее с ним.


13. c+ + (ture) 231 23.01.17 09:27 Сейчас в теме
(1) Делаешь полный каждый день и хранишь последние 5-6.
Делаешь бекап различий каждый час и хранишь последние 2-3.

Ночью восстанавливаешь на копии с замещением последний полный и не заканчивая восстановления заливаешь последний бекап различий. Вуаля, с бекапами все в ажуре! Не понимаю, в чем здесь можно было запутаться?!
14. Денис Николаев (avalakh) 169 02.03.17 20:51 Сейчас в теме
(13) каждый день делать полный бэкап вариант хороший, но не учитывает размеры базы
16. Александр alex_2h2008 (alex_sh2008) 5 02.03.17 21:09 Сейчас в теме
(1)А чем репликация базы на уровне sql сервера не устраивает?
17. Андрей Моторико (motorsoft) 2 07.03.17 12:53 Сейчас в теме +10 $m
6. Сан Саныч (herfis) 254 29.12.16 17:16 Сейчас в теме
Даже если имена файлов нужно определять по времени создания, а не по шаблону имени, то и тут решаемо.
Во-первых, если бэкапы через планы обслуживания делаются, в системных таблицах хранится некоторая история, откуда их можно достать.
Во-вторых, из Transact-SQL можно работать и с командной строкой и с COM-объектами.
В-третьих, с самим MSSQL можно работать из командной строки.
7. Денис Николаев (avalakh) 169 29.12.16 19:53 Сейчас в теме
Знаю что есть некие переменные, если возможно то какую нибудь конкретику в виде скрипта, как достать имена файлов из базы и как ими воспользоваться.

Например нашел, что можно получить имена файлов с помощью скрипта:

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 ...". Просто воткнуть вместо трех точек наверняка не сработает.
11. Сергей Сизов (sssss_aaaaa_2011) 21.01.17 14:42 Сейчас в теме
(7)
непонятно как эту конструкцию засунуть в "restore database fr om file ...". Просто воткнуть вместо трех точек наверняка не сработает.
Каую ЭТУ? Вы не умеете работать со строками? Вы не знаете как создать строку с текстом команды? Откуда уверенность про "наверняка"? Или вы просто без GUI никакой работы с сервером не представляете?
15. Денис Николаев (avalakh) 169 02.03.17 20:54 Сейчас в теме
(11) не понял суть вашего вопроса. Вероятно вы о том, что я не ориентируюсь в sql. Так и есть, синтаксис языка запроса sql для меня темный лес, поэтому и спрашиваю.
8. Канат Джумадылов (Fox-trot) 54 29.12.16 19:59 Сейчас в теме
уникальнейшая задача! если удастся решить ее, отпишитесь плиз. оч.прошу
Оставьте свое сообщение