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

Откуда: Москва
Сообщений: 97
Как седлать чтобы по распианию каждую ночь
в базе copy_base1 просиходило востановление базы из резервный копии базы base1 ?
11 ноя 11, 17:12    [11583677]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
Justbox,

написать необходимый скрипт Restore Database... и поместить его в JOB
11 ноя 11, 17:17    [11583748]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Baddy
Justbox,

написать необходимый скрипт Restore Database... и поместить его в JOB


А можите таким скриптом подилиться так как я не профисионал в написание скриптов =(
11 ноя 11, 18:11    [11584415]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Eagle_84
Member

Откуда: Москва
Сообщений: 1535
Justbox
Baddy
Justbox,

написать необходимый скрипт Restore Database... и поместить его в JOB


А можите таким скриптом подилиться так как я не профисионал в написание скриптов =(


смотрите в сторону
RESTORE DATABASE [БД] FROM  DISK = 'путь'
11 ноя 11, 18:13    [11584425]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Eagle_84
Justbox
пропущено...


А можите таким скриптом подилиться так как я не профисионал в написание скриптов =(


смотрите в сторону
RESTORE DATABASE [БД] FROM  DISK = 'путь'


Правильно понял надо писать вот так ?

RESTORE DATABASE [copy_base1] FROM DISK = 'G:\SQL LOCAL BACKUP\buh_ak_new\base1_backup_2011_11_11_030002_0730529.bak'

а сделать чтобы когда я указываю параметр DISK = брался последния резервная копия ?
11 ноя 11, 18:26    [11584542]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
RESOTRE DATABASE [copy_base1]
FROM DISK = 'G:\SQL LOCAL BACKUP\base1\base1_backup_2011_11_11_030002_0730529.bak'.
WITH REPLACE, RECOVERY, STATS = 10
MOVE 'copy_base1_Data' TO 'W:\SQL_BASE\copy_base1_data.mdf',
MOVE 'copy_base1_Log' TO 'Q:\SQL_LOG\copy_base1_log.ldf'

Вот так я думаю будет правилей указать SQL запрос =) а вот как сделать чтобы SQL запрос брал последнию дату резервной копии не пойму =(
11 ноя 11, 20:18    [11585107]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
aleks2
Guest
1. Запустите Profiler.
2. Из SSMS выдайте команду на восстановление нужной базы из нужного бэкапа. Поставив нужные птычки.
3. Ознакомьтесь в Profiler-e как правильно писать эту команду.
4. Отполируйте команду по собственному вкусу.
12 ноя 11, 17:47    [11587151]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
aleks2
1. Запустите Profiler.
2. Из SSMS выдайте команду на восстановление нужной базы из нужного бэкапа. Поставив нужные птычки.
3. Ознакомьтесь в Profiler-e как правильно писать эту команду.
4. Отполируйте команду по собственному вкусу.


Так я и сделал серовно

FROM DISK = 'G:\SQL LOCAL BACKUP\base1\base1_backup_2011_11_11_030002_0730529.bak'.

А мне надо чтобы заместо этого 2011_11_11_030002_0730529 бралась автоматически последния дата.
12 ноя 11, 19:36    [11587317]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
aleks2
Guest
Говорят, что если хорошо поискать, то в SSMS можна найти кнопку "Сделать фсе, как я хачу".
12 ноя 11, 20:20    [11587430]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Justbox
base1_backup_2011_11_11_030002_0730529.bak'.

А мне надо чтобы заместо этого 2011_11_11_030002_0730529 бралась автоматически последния дата.


Попробуй вытягивать название последнего бэкапа так
SELECT Name FROM msdb.dbo.backupset b
WHERE database_name = 'base1'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
	WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)
Вставляй это в переменную, формируй запрос и запускай.
Кстати, как сделаешь запости сюда, пусть другим будет на поживку.
12 ноя 11, 21:45    [11587630]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
SandalTree
Justbox
base1_backup_2011_11_11_030002_0730529.bak'.

А мне надо чтобы заместо этого 2011_11_11_030002_0730529 бралась автоматически последния дата.


Попробуй вытягивать название последнего бэкапа так
SELECT Name FROM msdb.dbo.backupset b
WHERE database_name = 'base1'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
	WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)
Вставляй это в переменную, формируй запрос и запускай.
Кстати, как сделаешь запости сюда, пусть другим будет на поживку.


Ага спс завтра буду пробовать , обязательно отвечу как получилось сделать.
12 ноя 11, 21:58    [11587665]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Сделал запрос :

declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'buh_ak_new'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'G:\SQL LOCAL BACKUP\buh_ak_new\'+ @baseBackUp

RESTORE DATABASE [copy_buh_ak_new]
FROM DISK = @pathBackUp
WITH FILE = 1,
MOVE N'buh_ak_new' TO N'D:\SQL BASE\copy_buh_ak_new.mdf',
MOVE N'buh_ak_new_log' TO N'C:\SQL LOG\copy_buh_ak_new_log.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO

Выдает:

Сообщение 137, уровень 15, состояние 1, строка 1
Необходимо объявить скалярную переменную "@baseBackUp".


проверяю синтаксис:
Выполнение команд успешно завершено.

проверяю переменную:

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'buh_ak_new'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

выдает:
buh_ak_new-Полная База данных Резервное копирование

Что делать ?
14 ноя 11, 10:37    [11591371]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
Сори я олень , вот правильный запрос .тему можно закрыть, Всем спасибо

Большой респект и уважуха SandalTree

justbox
declare @baseBackUp as nvarchar(50)
declare @pathBackUp as nvarchar(250)

SELECT @baseBackUp = Name FROM msdb.dbo.backupset b
WHERE database_name = 'buh_ak_new'
AND type = 'D' AND backup_start_date = (
SELECT MAX(i.backup_start_date)
FROM msdb.dbo.backupset i
WHERE i.database_name = b.database_name
AND i.type = type AND i.is_copy_only = 0
)

set @pathBackUp = 'G:\SQL LOCAL BACKUP\buh_ak_new\'+ @baseBackUp

RESTORE DATABASE [copy_buh_ak_new]
FROM DISK = @pathBackUp
WITH FILE = 1,
MOVE N'buh_ak_new' TO N'D:\SQL BASE\copy_buh_ak_new.mdf',
MOVE N'buh_ak_new_log' TO N'C:\SQL LOG\copy_buh_ak_new_log.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO
14 ноя 11, 11:06    [11591554]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Glory
Member

Откуда:
Сообщений: 104760
Justbox
Сори я олень , вот правильный запрос .тему можно закрыть

Только вот запись в msdb.dbo.backupset не гарантирует наличие файла бэкапа на диске
14 ноя 11, 11:14    [11591609]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Justbox
бралась автоматически последния дата.

Если включен xp_cmdshell и есть соответствующие права, то можно так
declare @tmp table (flname nvarchar(255))
declare	@sqlrun nvarchar(4000)
insert into @tmp
exec xp_cmdshell'dir c:\windows\inf\*.inf /b /a:-d /o:n'
delete from @tmp where flname is null
select top 1 
N'restore database [test] from disk = N'''+flname +N''''
from @tmp
order by flname desc
print @sqlrun
Это будет последний бекап
14 ноя 11, 11:43    [11591803]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
gds
Justbox
бралась автоматически последния дата.

Если включен xp_cmdshell и есть соответствующие права, то можно так
declare @tmp table (flname nvarchar(255))
declare	@sqlrun nvarchar(4000)
insert into @tmp
exec xp_cmdshell'dir c:\windows\inf\*.inf /b /a:-d /o:n'
delete from @tmp where flname is null
select top 1 
N'restore database [test] from disk = N'''+flname +N''''
from @tmp
order by flname desc
print @sqlrun
Это будет последний бекап

Justbox, в вашем случае
exec xp_cmdshell'dir G:\SQL LOCAL BACKUP\buh_ak_new\*.bak /b /a /o:n'
14 ноя 11, 11:45    [11591821]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
SandalTree
Justbox
base1_backup_2011_11_11_030002_0730529.bak'.

А мне надо чтобы заместо этого 2011_11_11_030002_0730529 бралась автоматически последния дата.


Попробуй вытягивать название последнего бэкапа так
SELECT Name FROM msdb.dbo.backupset b
WHERE database_name = 'base1'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
	WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)
Вставляй это в переменную, формируй запрос и запускай.
Кстати, как сделаешь запости сюда, пусть другим будет на поживку.

Это прокатит в том случае, если бекап будет сделан на том же сервере, куда он восстанавливается. А если бекап с другого сервера то увы - нет.
14 ноя 11, 11:48    [11591844]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
О как всех понесло =) сделал как смог с помощью , а так большое спасибо за другой вариант решения проблемы.
14 ноя 11, 12:40    [11592230]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
gds
SandalTree
пропущено...


Попробуй вытягивать название последнего бэкапа так
SELECT Name FROM msdb.dbo.backupset b
WHERE database_name = 'base1'
   AND type = 'D' AND backup_start_date = (  
   SELECT MAX(i.backup_start_date)
    FROM msdb.dbo.backupset i
	WHERE i.database_name = b.database_name
     AND i.type = type AND i.is_copy_only = 0 
)

Вставляй это в переменную, формируй запрос и запускай.
Кстати, как сделаешь запости сюда, пусть другим будет на поживку.

Это прокатит в том случае, если бекап будет сделан на том же сервере, куда он восстанавливается. А если бекап с другого сервера то увы - нет.


Вот пришло время восстанавливать бекап на другой сервер автоматически есть вот что :
Есть два сервера:

SRV1 (основной)
SRV2 (для отчетов)

там и там есть база UT

На сервере SRV1 есть шара \\SRV1C\SQLBACKUP\UT\ все резервные копии вот такого вида (UT_backup_2012_07_18_074650_9459623.bak)

Как мне каждый день восстанавливать последнею резервную копию в базу UT на сервер SRV2 ?

Помогите решить задачу. Заранее благодарен и извините за вторую тему .
18 июл 12, 20:45    [12885574]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
step_ks
Member

Откуда:
Сообщений: 936
9+держать последнюю копию с постоянным именем?
18 июл 12, 22:04    [12885720]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
step_ks
Member

Откуда:
Сообщений: 936
держать последнюю копию с постоянным именем?
18 июл 12, 22:06    [12885724]     Ответить | Цитировать Сообщить модератору
 Re: Расписание восстановления  [new]
Justbox
Member

Откуда: Москва
Сообщений: 97
step_ks
держать последнюю копию с постоянным именем?


Данки , все получилось .

alter database UT_OTCHETY set single_user with rollback immediate

USE [master]
RESTORE DATABASE [UT_OTCHETY] 
FROM  DISK = N'\\sqlserver\SQLBACKUP\OTCHETY_BACKUP_UT\OTCHETY_UT.bak' WITH  FILE = 1,  
MOVE N'ut_ak' TO N'D:\SQLDATA\BASE\UT_OTCHETY.mdf',  
MOVE N'ut_ak_log' TO N'D:\SQLDATA\LOG\UT_OTCHETY_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 5

GO

alter database UT_OTCHETY set multi_user with rollback immediate


Поправьте если делаю что-то не так.
19 июл 12, 09:48    [12886740]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить