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

Откуда:
Сообщений: 44
Привет всем, есть таска которая делает бэкап.
declare @today datetime
set @today=(select dateadd(day,datediff(day,0,getdate()),0))
declare @lstsunday datetime
set @lstsunday=(select @lstday - case datepart(dw,@lstday) when 7 then 0 else datepart(dw,@lstday) end)
if	(@lstsunday=@today and (select count(*) from msdb..backupset where database_name='DB' and  dateadd(day,datediff(day,0,backup_start_date),0)=@today)=0)
--FULL
begin
	set @dtp=(select '\\serv\backups_db\DB\DB_FULL'+(select CONVERT(nvarchar(30), GETDATE(), 112)+replace(CONVERT(nvarchar(30), GETDATE(), 114),':',''))+'.bak')
	set @exdate =(select dateadd(yy,3,getdate()))--3 года
	BACKUP DATABASE [DB] TO  DISK = @dtp
	WITH EXPIREDATE = @exdate, NOFORMAT, NOINIT,  NAME = N'DB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
	select @backupSetId = position from msdb..backupset where database_name=N'DB' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DB' )
	if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DB'' not found.', 16, 1) end
	RESTORE VERIFYONLY FROM  DISK = @dtp WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
	return
end


По логике вроде как должна выполняться каждую последнюю субботу, так и было два месяца подряд, а вот в октябре не прошло.
Может проблема в WITH EXPIREDATE (не совсем понимаю что оно делает)?
2 ноя 15, 07:53    [18357016]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Что примечательно но DIFF срабатывает как надо, хоть и текст такой же.

if	(day(getdate())%3=1 and (select count(*) from msdb..backupset where database_name='DB' and  dateadd(day,datediff(day,0,backup_start_date),0)=@today)=0)
--DIFF
begin
	set @dtp=(select '\\serv\backups_db\DB\DB_DIFF'+(select CONVERT(nvarchar(30), GETDATE(), 112)+replace(CONVERT(nvarchar(30), GETDATE(), 114),':',''))+'.bak')
	set @exdate =(select dateadd(mm,2,getdate()))--2 месяца
	BACKUP DATABASE [DB] TO  DISK = @dtp
	WITH EXPIREDATE = @exdate, DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'DB-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
	select @backupSetId = position from msdb..backupset where database_name=N'DB' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DB' )
	if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DB'' not found.', 16, 1) end
	RESTORE VERIFYONLY FROM  DISK = @dtp WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
	return
end
2 ноя 15, 07:56    [18357020]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
https://msdn.microsoft.com/ru-ru/library/ms186865(v=sql.120).aspx
Там сказано что такое EXPIREDATE (вкратце "Указывает время, по истечении которого резервный набор данных для этой резервной копии может быть перезаписан")
2 ноя 15, 09:09    [18357193]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
а вот в октябре не прошло.

Это вы цитируете сообщение об ошибке ?
2 ноя 15, 09:16    [18357211]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Но зачем вам нужен expirationdate когда у вас skip, это другой вопрос.
2 ноя 15, 09:17    [18357214]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Также параметр NOREWIND включает NOUNLOAD, да и вообще скрипт корявый. А Glory правильно сказал, выложите сообщение об ошибке.
2 ноя 15, 09:19    [18357223]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Сообщений об ошибке не было. Просто фулл не сделался.

Ок, скрипт корявый, буду пересматривать. Видимо что то с условием не то случилось, хотя все делалось, а сейчас нет.
2 ноя 15, 11:48    [18358028]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
Сообщений об ошибке не было. Просто фулл не сделался.

Так не бывает
2 ноя 15, 11:51    [18358043]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

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

почему? Таск выполняет скрипт, заходит в условие или нет, в итоге всегда отличное выполнение таски. Если только вдруг серв недоступен.

Выше оба кода из одной таски.
2 ноя 15, 11:53    [18358066]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
почему?

Потому, что Солнце встает на востоке, а садится на западе
Потому, что крокодилы не летают
2 ноя 15, 11:58    [18358100]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Rankatan
Guest
Sertik
Привет всем, есть таска которая делает бэкап.
declare @today datetime
set @today=(select dateadd(day,datediff(day,0,getdate()),0))
declare @lstsunday datetime
set @lstsunday=(select @lstday - case datepart(dw,@lstday) when 7 then 0 else datepart(dw,@lstday) end)
if	(@lstsunday=@today and (select count(*) from msdb..backupset where database_name='DB' and  dateadd(day,datediff(day,0,backup_start_date),0)=@today)=0)
--FULL


Попробуйте заменить на:
IF DATENAME(WEEKDAY,GETDATE())='Saturday' AND DATEPART(MONTH,GETDATE()) != DATEPART(MONTH,DATEADD(DAY,7,GETDATE()))
2 ноя 15, 12:05    [18358146]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

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

спасибо, думаю оставить @lstsunday=@today.

Глори, вот Вам ошибка, которую вы требуете
2 ноя 15, 12:07    [18358171]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
которую вы требуете

Она вам нужна. Чтобы вы ее читали ДО того, как писать сообщения в форуме.
2 ноя 15, 12:09    [18358188]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Rankatan
Guest
У вас условие IF для DIFF и FULL разное. Наверняка поэтому DIFF срабатывает, а FULL нет.

Условие в IF мутное, возможно с ошибкой. Используйте другой IF и все взлетит.
2 ноя 15, 12:13    [18358226]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
А можно вообще без условий, в таске есть расписание, зачем в скрипте оно нужно?
2 ноя 15, 12:15    [18358241]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
dark_DBa_dmin,
Честно не знаю еще, не моё.

Всем спасибо, понял что придется пересмотреть весь скрипт.

Глори, опять же, нет там ошибки: "The job succeeded". Тут видимо проблема в условиях, непонятно только почему раньше они норм срабатывали а вот в субботу октября не очень.
2 ноя 15, 14:27    [18359221]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

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

Т.е. вы даже не удосужились проверить, выполняется ли ваше прорверка IF и запускается бэкап вообще ?
Лучше сразу писать в форум со всякими бредовыми предположениями о WITH EXPIREDATE ?
2 ноя 15, 14:30    [18359241]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Sertik,

Вот это проверьте
set language english
select datepart(dw, getdate())
set language russian
select datepart(dw, getdate())
2 ноя 15, 15:08    [18359578]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

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

спасибо за ответы.

Всем остальным большое спасибо. Буду дальше разбирать скрипт.
2 ноя 15, 15:24    [18359715]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
И еще, храните каждый бекап в отдельном файле. В случае чего вы потеряете один бекап, а не все.
2 ноя 15, 16:32    [18360186]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
dark_DBa_dmin
И еще, храните каждый бекап в отдельном файле. В случае чего вы потеряете один бекап, а не все.

А если потеряет полный, и дифы останутся ? :)
2 ноя 15, 16:38    [18360230]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Ozerov
dark_DBa_dmin
И еще, храните каждый бекап в отдельном файле. В случае чего вы потеряете один бекап, а не все.

А если потеряет полный, и дифы останутся ? :)


Ну, не повезло значит :) Это так, отступление было.
2 ноя 15, 16:45    [18360286]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
dark_DBa_dmin
Member

Откуда:
Сообщений: 105
Ozerov
dark_DBa_dmin
И еще, храните каждый бекап в отдельном файле. В случае чего вы потеряете один бекап, а не все.

А если потеряет полный, и дифы останутся ? :)


Просто был случай когда в одно маленькой маленькой конторе бекапы хранились в одном файле и после выключения света грохнулась БД и файл с фул бекапами, востановились только за счет того что кто то зачем то сделал полный бекап себе на комп.
2 ноя 15, 17:01    [18360403]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Появились некоторые вопросы после переписания джоба.
У меня теперь так
full - раз в день
diff/log каждые два часа.
Фулл и самый последний в день дифф хранятся по 6 дней, потом удаляются, по истечении срока.

Так вот два вопроса
1. Дифф почему то растет все больше и больше, хотя я так понимаю, такое случается если фулл долго не делать. Но у меня каждый день. Дифы сохраняю только те которые в конце дня выполнены, предыдущие удаляю. (1 день - 2 гига, 2 - 3г, 3 - 3,5гб 4 - 4гига).
2. После бэкапа тлога не всегда сжимается файл журнала.

В чем могут быть причины?
14 апр 16, 08:30    [19054299]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
1. Дифф почему то растет все больше и больше, хотя я так понимаю, такое случается если фулл долго не делать. Но у меня каждый день. Дифы сохраняю только те которые в конце дня выполнены, предыдущие удаляю. (1 день - 2 гига, 2 - 3г, 3 - 3,5гб 4 - 4гига).

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

Sertik
2. После бэкапа тлога не всегда сжимается файл журнала.

бэкап журнала - это не гарантия его сжатия
14 апр 16, 08:37    [19054313]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить