RESTORE DATABASE - с другого сервера.

teCa
Дата: 21.01.2013 11:49:51
Добрый день.
Хочу реализовать задание, которое будет каждый день восстанавливать тестовую БД из ежедневного полного бэкапа рабочей БД.

так как имя бэкапа имеет следующий формат db_backup_2013_01_21_000002_1989658.bak, то явно задать путь до бэкапа в задание не получится. Сначала следует его получить. Собственно вопрос, где можно узнать имя последнего полного бэкапа?

И еще вопрос. Будет ли работать схема:

RESTORE DATABASE AdventureWorks2012 
   FROM AdventureWorks2012Backups;


Если я залинкую удаленный сервер?
Crimean
Дата: 21.01.2013 11:56:08
бакап - это файл. линкованный сервер максимум поможет вычислить имя последнего бакапа. но файл надо будет брать с общей папки
да! иногда проще работать только с каталогом бакапов.
Критик
Дата: 21.01.2013 11:56:15
для получения имени файла можно использовать
xp_cmdshell+dir

либо делаете связанный сервер и, используя запрос, получаете имя последнего бэкапа (запрос строите на основе отчета: пкм на базе в SSMS->Отчеты->Стандартный->События резервного копирования)
teCa
Дата: 21.01.2013 12:02:59
Критик
либо делаете связанный сервер и, используя запрос, получаете имя последнего бэкапа (запрос строите на основе отчета: пкм на базе в SSMS->Отчеты->Стандартный->События резервного копирования)


Вот этот вариант отлично подходит. В отчете есть все что нужно, вот только как посмотреть его код?
alexeyvg
Дата: 21.01.2013 12:26:20
teCa
Критик
либо делаете связанный сервер и, используя запрос, получаете имя последнего бэкапа (запрос строите на основе отчета: пкм на базе в SSMS->Отчеты->Стандартный->События резервного копирования)


Вот этот вариант отлично подходит. В отчете есть все что нужно, вот только как посмотреть его код?
Запрос от отчёта можно посмотреть в профайлере.
Ozerov
Дата: 21.01.2013 12:46:16
1. Делать бэкап с фиксированным именем.
2. Так же можно использовать copy_only именно для этих целей.
teCa
Дата: 21.01.2013 15:05:54
Путь достал. А подскажите еще вот такой момент

RESTORE DATABASE test_RESTORE 
FROM DISK =@backup_path
WITH 
MOVE 'test_RESTORE' TO 'E:\DateBase\test_RESTORE.mdf',
MOVE 'test_RESTORE_log' TO 'E:\DateBase\test_RESTORE_log.ldf',
REPLACE


А в ответ получаю вот такую беду:
Сообщение 5133, уровень 16, состояние 1, строка 7
Поиск каталога для файла "L:\DataBase\db002.mdf" не удался, вызвав ошибку операционной системы 3(Системе не удается найти указанный путь.).
Сообщение 3156, уровень 16, состояние 3, строка 7
Невозможно восстановить файл "db002" в "L:\DataBase\db002.mdf". Используйте WITH MOVE для определения допустимого местоположения файла.
Сообщение 5133, уровень 16, состояние 1, строка 7
Поиск каталога для файла "L:\DataBase\db002_log.ldf" не удался, вызвав ошибку операционной системы 3(Системе не удается найти указанный путь.).
Сообщение 3156, уровень 16, состояние 3, строка 7
Невозможно восстановить файл "db002_log" в "L:\DataBase\db002_log.ldf". Используйте WITH MOVE для определения допустимого местоположения файла.
Сообщение 3119, уровень 16, состояние 1, строка 7
При планировании инструкции RESTORE возникли проблемы. Подробнее см. в предыдущих сообщениях.
Сообщение 3013, уровень 16, состояние 1, строка 7
RESTORE DATABASE прервано с ошибкой.
Ozerov
Дата: 21.01.2013 15:07:12
Системе не удается найти указанный путь/

нет пути, либо прав нет у учетки, под которой сиквил стартует.
Crimean
Дата: 21.01.2013 15:07:17
ну ты же достал локальный путь с того сервера
teCa
Дата: 21.01.2013 15:09:56
Crimean
ну ты же достал локальный путь с того сервера

Там шара. С этого сервера доступ к файлу есть.