Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Добрый день. Помогите с написание SQL скрипта для MS SQL 2005.

Есть рабочая БД и тестовая БД (для всякого рода тестов, не резервная). Необходимо поддержание тестовой БД в актуальном состоянии путем восстановления из бэкапа рабочей. Быкапы рабочей находится на диске d:\temp\Trade_backup_2012_10_24_070006_3086250.bak вот в таком формате.

Вот шаги которые надо выполнить автоматически:
1.Просмотр каталога, где хранятся архивы;
2.Поиск самого молодого архива;
3.Восстановление БД.

Нашел нечто похожее, но не могу переделать для своих нужд.

declare @db_name as varchar(100) = 'data_base_1';--имя базы данных
declare @table as table(SUBDIR varchar(100)); --таблица для хранения всех имен подкаталогов
declare @date as varchar(200); --дата создания архива
declare @path varchar(200) --путь к архиву
insert @table exec master.dbo.xp_subdirs N'\\192.168.1.50\sql_server_backups\'; --запись всех подкаталогов в таблицу
select @date = MAX(subdir) from @table --поиск самого молодого архива (самой большой даты)
set @path = N'\\192.168.1.50\sql_server_backups\' + @date + '\' + @db_name --задание пути для восстановления
RESTORE DATABASE @db_name FROM DISK = @path WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
24 окт 12, 12:19    [13367707]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
untiring
Нашел нечто похожее, но не могу переделать для своих нужд.

Что мешает ?
24 окт 12, 12:20    [13367715]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Мешает необразованность в написаниии SQL скриптов.

declare @db_name as varchar(100) = 'data_base_1';--имя базы данных
declare @date as varchar(200); --дата создания архива
declare @path varchar(200) --путь к архиву
select @date = MAX --поиск самого молодого архива (самой большой даты)
set @path = N'\\192.168.1.50\sql_server_backups\' + @date + '\' + @db_name --задание пути для восстановления
RESTORE DATABASE @db_name FROM DISK = @path WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO

хотел сделать вот так. но не знаю тогда из чего должен выбирать select
24 окт 12, 12:26    [13367751]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
А создать отдельное задание: backup copy only в другую папку, и второе задание восстановление из этой папки бэкапа с фиксированным именем не проще ?
24 окт 12, 12:34    [13367798]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Ozerov
А создать отдельное задание: backup copy only в другую папку, и второе задание восстановление из этой папки бэкапа с фиксированным именем не проще ?


на самом деле есть несклько баз, которые надо восстанавливать. поэтому хотелось бы скрипт
24 окт 12, 12:39    [13367839]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
untiring
Ozerov
А создать отдельное задание: backup copy only в другую папку, и второе задание восстановление из этой папки бэкапа с фиксированным именем не проще ?


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


ну несколько баз, и что ?
Вешаете задание на бэкап и восстановление

BACKUP DATABASE [MyDB1] TO  DISK = N'Путь к папке к будет лежать для восстановления MyDb1.bak' WITH  COPY_ONLY, NOFORMAT, INIT,  NAME = N'MYDB1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10

Так в задании для всех баз.

Затем на восстановление (можно даже в том же)

RESTORE DATABASE [Mydb1] FROM  DISK = N'путь к бэкапу Mydb1.bak' WITH  FILE = 1,  MOVE N'Mydb1' TO N'путь где будет лежать mydb1.mdf',  NOUNLOAD,  REPLACE,  STATS = 10


Подумайте о том, что могут оставаться открытые коннекты, надо будет сбивать.
24 окт 12, 12:47    [13367895]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Ozerov,
Подскажите чем отличается COPY_ONLY от бэкапа созданного с помощью плана обслуживания? Можно ли в плане задать формат имени файла бэкапа?
24 окт 12, 12:59    [13368005]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
untiring
Ozerov,
Подскажите чем отличается COPY_ONLY от бэкапа созданного с помощью плана обслуживания? Можно ли в плане задать формат имени файла бэкапа?


Этот бэкап не входит в историю бэкапов. Не нарушет последовательность разностных и тп бэкапов.

Этим скриптом можно указать фиксированное, не гемороиться мучиться с составлением списка бэкапов, поиском новейшего и тп. Короче проще и надежнее.
24 окт 12, 13:02    [13368026]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
Этим скриптом можно указать фиксированное ИМЯ
24 окт 12, 13:02    [13368029]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Ozerov,

Ваш метод работает. Но всё-таки может поможете со скриптом, которые вначале темы? Бэкапы уже все настроены, архивируются, копируются...не хотелось бы создавать дополнительные задания бэкапов.
24 окт 12, 13:19    [13368172]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Glory
untiring
Нашел нечто похожее, но не могу переделать для своих нужд.

Что мешает ?


Вы мне поможете?
24 окт 12, 16:04    [13369555]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
aWlad
Member

Откуда: Москва
Сообщений: 42
untiring,

RTFM
24 окт 12, 22:29    [13371395]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
untiring
Вы мне поможете?

Что конкретно у вас не получается ?
25 окт 12, 10:49    [13372738]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Glory
untiring
Вы мне поможете?

Что конкретно у вас не получается ?

я не владею написание скриптов. Можете написать скрипт для моего "восстановления"
25 окт 12, 11:19    [13372952]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
untiring
Можете написать скрипт для моего "восстановления"

Нет.
25 окт 12, 11:42    [13373160]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
untiring
Glory
пропущено...

Что конкретно у вас не получается ?

я не владею написание скриптов. Можете написать скрипт для моего "восстановления"


Я Вам предложил рабочий вариант. А писать для Вас (не указывать на ошибки, а именно писать), навряд ли кто - либо будет.
Тут есть раздел - работа. Можно найти за соответствующую плату.
25 окт 12, 11:53    [13373243]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Ozerov,
В верху есть почти готовый код. Мне надо чтобы кто-нибудь просто сказал что в моём случае записывать в переменную @table и исправил строку с инструкцией select.
25 окт 12, 12:10    [13373375]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
untiring
Мне надо чтобы кто-нибудь просто сказал что в моём случае записывать в переменную @table

Наверное список файлов с бэкапами ?
25 окт 12, 12:15    [13373427]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Glory
untiring
Мне надо чтобы кто-нибудь просто сказал что в моём случае записывать в переменную @table

Наверное список файлов с бэкапами ?


Вы имеете ввиду перечисление всех имен? Или некоторую переменную, которая хранит эти имена?
25 окт 12, 12:25    [13373524]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Glory
untiring
Мне надо чтобы кто-нибудь просто сказал что в моём случае записывать в переменную @table

Наверное список файлов с бэкапами ?


могу я написать так declare @table as table(FILES varchar(100))?
в примере, который в шапке SUBDIR это некая переменная которая существует в T-SQL?
25 окт 12, 12:30    [13373575]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
untiring
могу я написать так declare @table as table(FILES varchar(100))?

Можете
untiring
в примере, который в шапке SUBDIR это некая переменная которая существует в T-SQL?

Это декларация.
Если вы у себя на груди напишите Супермен, то не научитесь автоматически летать.
25 окт 12, 12:34    [13373613]     Ответить | Цитировать Сообщить модератору
 Re: автоматическое восстановление в SQL 2005  [new]
untiring
Member

Откуда:
Сообщений: 13
Glory,
получается что я могу в строке declare @table as table(SUBDIR varchar(100)); вообще ничего не менять.
Подскажите тогда на каком этапе в скрипте задается, что он ищет по именам директорий?
insert @table exec master.dbo.xp_subdirs N'd:\temp\'; --запись всех подкаталогов в таблицу';
25 окт 12, 12:42    [13373664]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить