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

Откуда:
Сообщений: 23
Здравствуйте.

sql2008R2

С помощью плана обслуживания делаю бекап всех пользовательских баз: полный бекап еженедельно в воскресенье и разностный ежедневно кроме воскресенья.
Если создаётся новая база например среди недели, то разностный бекап не делается, т.к. нет полного.
Вопрос такой: как настроить план, чтобы при разностном бекапе в случае отсутствия у БД полного бекапа, сделать для этой бд полный бекап?
18 фев 15, 08:48    [17279482]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
wlbs
Member

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

средствами SSIS (см. прикрепленную картинку).

К сообщению приложен файл. Размер - 53Kb
18 фев 15, 09:05    [17279521]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4538
kastus
Вопрос такой: как настроить план, чтобы при разностном бекапе в случае отсутствия у БД полного бекапа, сделать для этой бд полный бекап?

Никак.
Без полного не плучится.
Чтобы было понятнее представьте себе, что сделан полный бекап и сразу же разностный, не содержащий никаких изменений.
Как вы хотите получить из пустого разностного полный бэкап всей базы?
18 фев 15, 10:36    [17279905]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
kastus
Member

Откуда:
Сообщений: 23
wlbs
kastus,

средствами SSIS (см. прикрепленную картинку).


не совсем то. при сбое получается, так, что повторно для всех бд тоже делается полный бекап.

SQL2008
kastus
Вопрос такой: как настроить план, чтобы при разностном бекапе в случае отсутствия у БД полного бекапа, сделать для этой бд полный бекап?

Никак.
Без полного не плучится.
Чтобы было понятнее представьте себе, что сделан полный бекап и сразу же разностный, не содержащий никаких изменений.
Как вы хотите получить из пустого разностного полный бэкап всей базы?


может я не правильно выразился или мне не так поняли.
задание делает разностные бекапы баз, при появлении новой базы это задание для новой бд бекап не делает, т.к. нету полного, т.е. пишет ошибку. Вот в этом случае хотелось, чтобы задание делало для новой бд полный бекап.
18 фев 15, 11:04    [17280112]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
kastus
может я не правильно выразился или мне не так поняли.
задание делает разностные бекапы баз, при появлении новой базы это задание для новой бд бекап не делает, т.к. нету полного, т.е. пишет ошибку. Вот в этом случае хотелось, чтобы задание делало для новой бд полный бекап.

Добавте шаг который проверяет бекап хистори....и в заивисмости от него разруливайте дальнейшие действия
18 фев 15, 11:21    [17280241]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
kastus
Member

Откуда:
Сообщений: 23
Maxx
Добавте шаг который проверяет бекап хистори....и в заивисмости от него разруливайте дальнейшие действия


смотреть в msdb dbo.backupset все базы и на основании полученных данных делать, то или иное ?
18 фев 15, 11:35    [17280348]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Backup History and Header Information (SQL Server)
18 фев 15, 11:36    [17280363]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Glory
Member

Откуда:
Сообщений: 104751
Maxx
Добавте шаг который проверяет бекап хистори....и в заивисмости от него разруливайте дальнейшие действия

Да у ТС один шаг бэкапит ВСЕ пользовательские базы. Какое уж тут разруливание.
18 фев 15, 11:38    [17280370]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
Да у ТС один шаг бэкапит ВСЕ пользовательские базы. Какое уж тут разруливание.

ето тоже проходит
18 фев 15, 11:43    [17280418]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
kastus
Member

Откуда:
Сообщений: 23
нагуглил такой скриптик, поставил в задание T-SQL перед выполнением разностного бекапа всех баз.
вроде работает. если есть желание, то можете прокоментировать на предмет каких косяков?
/******************** BACKUP *****************/

DECLARE @name VARCHAR(50)
DECLARE @path VARCHAR(256)
DECLARE @fileName VARCHAR(256)
DECLARE @fileDate VARCHAR(20)
DECLARE @subDirName VARCHAR(256)

SET @path = 'E:\backup\1cdb\'  

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT m.name FROM master.dbo.sysdatabases m LEFT OUTER JOIN msdb.dbo.backupset s
 ON m.name = s.database_name WHERE s.database_name IS NULL AND m.name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   

WHILE @@FETCH_STATUS = 0   
BEGIN   
       SET @subDirName = @path + @name
       EXECUTE master.dbo.xp_create_subdir @subDirName
       SET @fileName = @subDirName + '\' + @name + '_' + @fileDate + '.bak'  
       BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
 
       FETCH NEXT FROM db_cursor INTO @name   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor
19 фев 15, 08:26    [17285270]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Glory
Member

Откуда:
Сообщений: 104751
kastus
вроде работает. если есть желание, то можете прокоментировать на предмет каких косяков?

А то, что это скриптик просто делает полные бэкапы всех пользовательских баз, вы в курсе ?
19 фев 15, 09:16    [17285407]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
wlbs
Member

Откуда:
Сообщений: 37
kastus
wlbs
kastus,

средствами SSIS (см. прикрепленную картинку).


не совсем то. при сбое получается, так, что повторно для всех бд тоже делается полный бекап.

Ну давай подумаем немножко.
Если баз больше пяти - то уже проблематично становиться.

К сообщению приложен файл. Размер - 94Kb
19 фев 15, 09:22    [17285426]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
kastus
Member

Откуда:
Сообщений: 23
Glory
kastus
вроде работает. если есть желание, то можете прокоментировать на предмет каких косяков?

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

не так. Скрипт делает полный бекап тех баз, для которых не было бекапов вообще.
Т.е. сравнивает данные из двух таблиц, если база есть, но нету её в msdb..backupset, то делает для неё фул бекап.

wlbs
kastus
пропущено...


не совсем то. при сбое получается, так, что повторно для всех бд тоже делается полный бекап.

Ну давай подумаем немножко.
Если баз больше пяти - то уже проблематично становиться.

У меня сейчас три базы, всего баз будет в районе ста, базы создаются через консоль 1С и я о них ничего не знаю, что они появились в SQL.

К сообщению приложен файл. Размер - 8Kb
19 фев 15, 09:44    [17285519]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
wlbs
Member

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

я не очень хорошо знаю t-sql, но мне кажется в параметр with надо DIFFERENTIAL прописать.
Но и что-то мне подсказывает, что нужно прописать условие IF с отслеживанием кодом ошибки. Если код ошибки соответствует отсутствию full бэка - выполнять full, иначе diff.
19 фев 15, 10:13    [17285661]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
wlbs
Member

Откуда:
Сообщений: 37
DECLARE @Error int

//**какой то код**//


WHILE @@FETCH_STATUS = 0   
BEGIN 
       SET @Error = 0
       SET @subDirName = @path + @name
       EXECUTE master.dbo.xp_create_subdir @subDirName
       SET @fileName = @subDirName + '\' + @name + '_' + @fileDate + '.bak'  
       BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL, NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
       SET @Error = @@ERROR

//****дописать код ошибки********//
       IF @Error = <Сюда_пишим_код_ошибки>
       BEGIN
            BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10 ;
       END
       FETCH NEXT FROM db_cursor INTO @name   
END 

//***какой то код***//  


Абсолютно не знаю T-SQL, но беглый взгляд по справочникам сказал, выглядить это должно как то так... (з.ы. REWIND и NOUNLOAD разве нужны тут?)
19 фев 15, 10:43    [17285863]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
wlbs
Абсолютно не знаю T-SQL, но беглый взгляд по справочникам сказал, выглядить это должно как то так... (з.ы. REWIND и NOUNLOAD разве нужны тут?)

Откройте хелп по команде BACUP и перестаньте гадать на кофейной гуще
19 фев 15, 10:55    [17285924]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
wlbs
Member

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

я там коды ошибок не нашел. Я то хелпом и оперировал. Вообщем я немного дописал код.
/******************** BACKUP *****************/

DECLARE @name VARCHAR(50)
DECLARE @path VARCHAR(256)
DECLARE @fileName VARCHAR(256)
DECLARE @fileDate VARCHAR(20)
DECLARE @subDirName VARCHAR(256)
DECLARE @Error int

SET @path = 'E:\backup\1cdb\'  

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT m.name FROM master.dbo.sysdatabases m LEFT OUTER JOIN msdb.dbo.backupset s
 ON m.name = s.database_name WHERE s.database_name IS NULL AND m.name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   

WHILE @@FETCH_STATUS = 0   
BEGIN 
       SET @Error = 0
       SET @subDirName = @path + @name
       EXECUTE master.dbo.xp_create_subdir @subDirName
       SET @fileName = @subDirName + '\' + @name + '_' + @fileDate + '.bak'  
       BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL, NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
       SET @Error = @@ERROR

       IF @Error = <Сюда_пишим_код_ошибки>  //****дописать код ошибки********//
       BEGIN
            BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10 ;
       END
       FETCH NEXT FROM db_cursor INTO @name   
END 


CLOSE db_cursor   
DEALLOCATE db_cursor
19 фев 15, 11:07    [17285992]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Glory
Member

Откуда:
Сообщений: 104751
wlbs
я там коды ошибок не нашел.

А вы только некоторые ошибки собрались обрабатывать ? Не все ?
19 фев 15, 11:09    [17286003]     Ответить | Цитировать Сообщить модератору
 Re: бекап бд  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
wlbs
STATS = 10


И вот ето вам зачем ? Вы куда ето будете выводить то ?
Зачем ошибки пытаться генерировать..если вам уже сказали как найти информацию о том делался ли полный бекап для данной БД ?
19 фев 15, 11:24    [17286086]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить