Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Ситуацыя слудующая...
Есть MaintenancePlan, который бэкапит базы на сервер, а потом копирует их на сетевой диск job-ом
DECLARE @Name VARCHAR(255) -- путь к файлу бэкапа
DECLARE @cmd VARCHAR(300)  -- результат команды который выполняет xp_cmdshell 
DECLARE @PathOut VARCHAR(255)
SET @PathOut='\\XX.XX.XX.XX\SWBackUp'
--выбераем из базы msdb последний бэкап[/b]
Select @Name=physical_device_name
From [msdb].[dbo].[backupmediafamily]
where media_set_id IN (select max (media_set_id)
From [msdb].[dbo].[backupmediafamily])
--print @Name
SET @cmd='copy /Y ' + @Name +' '+@PathOut+rtrim(SUBSTRING(@Name,10,100))+char(10)
--print @cmd
/*если сделать print @cmd то получим copy /Y E:\BackUp\portal2\portal2_backup_200903020730.bak \\XX.XX.XX.XX\SWBackUp\portal2\portal2_backup_200903020730.bak*/
EXEC master.dbo.xp_cmdshell @cmd
И есть MaintenancePlan который копирует N-баз!!!
ВОПРОС!!!
Как мне узнать какие базы бэкапяться в MaintenancePlan? чтоб создать универсальный job, который копировать эти N баз??

Какие надо использовать системные таблицы?
2 мар 09, 11:15    [6875766]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
А.Панков
Member

Откуда: Toronto
Сообщений: 523
А если сразу на сетевой диск бекапить?
2 мар 09, 17:55    [6878528]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
Crimean
Member

Откуда:
Сообщений: 13148
А.Панков
А если сразу на сетевой диск бекапить?


то будет херовее сильно всем. лудше сначала на локаль, потом - копировать, проверено электроникой. и каждый раз - в новый файл. печальный опыт.
2 мар 09, 20:49    [6879053]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Согласен с Crimean
если брать системные таблицы, которые связаны с MaintenancePlan...
select * FROM [msdb].[dbo].[sysdbmaintplans]
select * FROM [msdb].[dbo].[sysdbmaintplan_databases]
select * FROM [msdb].[dbo].[sysdbmaintplan_history]
select * FROM [msdb].[dbo].[sysdbmaintplan_jobs]
так они "практически" все пустые...
а у ВАС как..? они тоже пустые..?
Вопрос!!! В какой (или в каких) системных таблицах можно найти имена БД, которые бэкапяться в Maintenance Plan?
2 мар 09, 22:23    [6879162]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
dbnadm
Member

Откуда:
Сообщений: 101
А если сделать так чтобы ваш maintenance plan бэкапил все в отдельную папочку а уж опосля всю папку до кучи и копировать куда вам надо?
3 мар 09, 08:59    [6879658]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Это совсем не удобно...
3 мар 09, 09:10    [6879674]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
Crimean
Member

Откуда:
Сообщений: 13148
85sergu
Это совсем не удобно...


"мне не надо, чтоп стоял, мне надо, чтоп блестел" (ц) боцман из известного анекдота
резервное копирование не обязано быть удобным. оно обязано быть надежным
для определенности - версия сервера?
цель плана? хостинг? постоянно переменное число баз? или фиксированное число баз? или это мультисерверное управление и задания по обслуживанию будут тиражироваться?
3 мар 09, 10:40    [6880040]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
85sergu
Это совсем не удобно...

Надо копировать не то, что стоит в плане. А то, что было действительно заархивировано.
История бэкапов пишется в таблицы базы msdb
3 мар 09, 10:53    [6880110]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31167
85sergu
так они "практически" все пустые...
а у ВАС как..? они тоже пустые..?
У вас, наверное, версия 2008?

Это работает только в 2005-ом

85sergu
Вопрос!!! В какой (или в каких) системных таблицах можно найти имена БД, которые бэкапяться в Maintenance Plan?
Я думаю, это зашито в бинарниках плана. Куда катится SQL Server :-(
3 мар 09, 11:08    [6880211]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Резервное копирование должно быть НАДЕЖНЫМ И УДОБНЫМ
Версия сервера Microsoft SQL Server 2005 - 9.00.3050.00 (Intel X86) Mar 2 2007 20:01:28 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Цель плана: Maintenance Plan выполняет бэкап N-баз! Скрипт должен быть универсальным, и выполнять копирование бэкапов(которые выполнились в плане) на сетевой диск!
3 мар 09, 11:23    [6880315]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
gang
Member

Откуда:
Сообщений: 1394
Информация о всех успешных бекапах хранится в msdb.dbo.backupmediafamily ,msdb.dbo.backupset. Можете сравнивать содержимое до и после мейнт. плана и копировать разницу.
3 мар 09, 11:28    [6880339]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Glory
85sergu
Это совсем не удобно...

Надо копировать не то, что стоит в плане. А то, что было действительно заархивировано.
История бэкапов пишется в таблицы базы msdb

Если выполнять скрипты
select * FROM [msdb].[dbo].[backupset] 
select * FROM [msdb].[dbo].[backupmediafamily]
select * FROM [msdb].[dbo].[backupfile]
select * FROM [msdb].[dbo].[backupfilegroup]
select * FROM [msdb].[dbo].[backupmediaset]
Там есть вся нужная инфа о бэкапах....НО....как мне узнать какие базы бэкапировались в плане....чтоб в дальнейшем их скопировать на сетевой диск?
3 мар 09, 11:30    [6880346]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
85sergu

Там есть вся нужная инфа о бэкапах....НО....как мне узнать какие базы бэкапировались в плане....чтоб в дальнейшем их скопировать на сетевой диск?

Никак. Читайте мое сообщение. Оно содержит другой смысл.
3 мар 09, 11:31    [6880353]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Идея хорошая...даже очень!!! спс gang
Еще варианты есть?
3 мар 09, 11:38    [6880406]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
85sergu
Идея хорошая...даже очень!!! спс gang
Еще варианты есть?

Поймите, что бэкап можно сделать и вне рамок плана. И тогда все ваше копирование на сетевой диск потеряет смысл. Потому что будет нарушена цепочка бэкапов.
3 мар 09, 11:42    [6880433]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Если привязываться к полю media_set_id то скипт будет вытягивать последный бэкап независимо от того каким образом делался бэкап!!!
--выбераем из базы msdb последний бэкап
Select @Name=physical_device_name
From [msdb].[dbo].[backupmediafamily]
where media_set_id IN (select max (media_set_id)
From [msdb].[dbo].[backupmediafamily])
3 мар 09, 11:48    [6880474]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
хотя вы правы...
3 мар 09, 11:49    [6880481]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
gang
Member

Откуда:
Сообщений: 1394
85sergu
Идея хорошая...даже очень!!! спс gang
Еще варианты есть?
Она приемлема только при условии что кроме майнт. плана никто не генерит бекапов. Другие варианты врядли увидите. Вам необходимо копировать файлы бекапов. Имя бекапа генерится планом только в момент выполнения и по завершении помещается в указанные Вам таблицы. Т.о. ответ на ваш исходный вопрос, "какие БД бекапит план?" даже если Вы его получите не приблизит Вас к решению. В таблицах же msdb для бекапов не существует никаких признаков, по которым можно было бы установить что они были сформированы через майнт. план. Что в принципе понятно, т.к. план это только оболочка которая выполняет бекап стендартной TSQL командой BACKUP DATABASE. Так что Вам остаются только косвенные признаки: время генерации, возможно, имя пользователя сгенерившего бекап.
3 мар 09, 11:51    [6880488]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
СОГЛАСЕН...ЭТО ДА!!!
3 мар 09, 11:54    [6880509]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
[/quot]время генерации, возможно, имя пользователя сгенерившего бекап.[/quot]
Привязка к этим полям не даст универсальный скрипт....прийдется индивидуально подходить к каждому скрипту((
3 мар 09, 12:05    [6880568]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
gang
Member

Откуда:
Сообщений: 1394
85sergu, А унивирсальным относительно чего должен быть скрипт?
PS Кстати предлагаю именовать его не "скрипт" а "решение", т.к. реализация может лежать за пределами одного скрипта и даже SQL.
3 мар 09, 12:08    [6880590]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
можно как то реализовать такую идею
при добавлении одной записи в таблицу [msdb].[dbo].[backupmediafamily] выполнялся скрипт?
3 мар 09, 12:22    [6880681]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
gang
Member

Откуда:
Сообщений: 1394
85sergu,

Можно.
3 мар 09, 12:27    [6880720]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
подскажите как?
какие операторы при этом использовать?
3 мар 09, 12:29    [6880738]     Ответить | Цитировать Сообщить модератору
 Re: Универсальный скрипт для копирования BackUp-ов на сетевой диск  [new]
gang
Member

Откуда:
Сообщений: 1394
85sergu,

Реакция на вставку\модификацию записей в таблице реализуется через триггеры. BOL: triggers, overview
3 мар 09, 12:32    [6880761]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить