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

Откуда:
Сообщений: 211
Доброго дня Форумчане! Прошу Вашей помощи, имеется Job, изначально использовал совместно с франилками от Ola. Но когда дошел до инстанса где базируется 2005 версия, обнаружилась проблема, при выполнении скрипта выходит ошибка: The value for the parameter @Compress is not supported.
В интернете не смог найти чего то дельного по этой проблеме и решил сделать с нуля, но тут тоже проблема, что я еще не освоил все тонкости и столкнулся с рядом проблем.
Вопросы:
1. Проблему в скрипте Ola нашел, там есть условие версионности что не ранее 10-й, возможно ли это подправить или есть технические ограничения?
2. Если я возьму за основу скрипт с помощника бэкапирования, тогда как сделать так чтобы он не перезаписывал, сжимал и удалял старше 3-х дней.
Еще проблема, что нужно сделать это в рамках Джоба.
Скидываю логи и скрипты:
Скрипт Ola:
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'APM', 
@Directory = N'\\ala7600nas02\Archive_Backup\SQL backup', 
@BackupType = 'FULL', 
@Verify = 'Y', 
@Compress = 'Y',
@CheckSum = 'Y',
@CleanupTime = 72
Хранилка при создании:
IF @Compress NOT IN ('Y','N') OR @Compress IS NULL OR (@Compress = 'Y' AND @BackupSoftware IS NULL AND NOT ((@Version >= 10 AND @Version < 10.5 AND SERVERPROPERTY('EngineEdition') = 3)
  OR (@Version >= 10.5 AND (SERVERPROPERTY('EngineEdition') = 3 OR SERVERPROPERTY('EditionID') IN (-1534726760, 284895786))))) OR (@Compress = 'N' AND @BackupSoftware 
  IS NOT NULL AND (@CompressionLevel IS NULL OR @CompressionLevel >= 1)) OR (@Compress = 'Y' AND @BackupSoftware IS NOT NULL AND @CompressionLevel = 0)
  BEGIN
    SET @ErrorMessage = 'The value for the parameter @Compress is not supported.' + CHAR(13) + CHAR(10) + ' '
    RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
    SET @Error = @@ERROR
  END
Скрипт с помощника бэкапирования:
BACKUP DATABASE [DB] TO  DISK = N'Sourse.bak' WITH NOFORMAT, NOINIT,  NAME = N'Source', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'Source' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'Source' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''Source'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'Sourse.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO


Сообщение было отредактировано: 7 ноя 17, 13:15
6 ноя 17, 09:08    [20929497]     Ответить | Цитировать Сообщить модератору
 Re: Job с сжатием бэкапа для 2005 версии!  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Den_KP,
сжатие бэкапа самим сиквелом доступно с 2008 версии, так что проверка версии в скрипте сделана не от балды.
Сжимайте внешним архиватором
6 ноя 17, 09:28    [20929512]     Ответить | Цитировать Сообщить модератору
 Re: Job с сжатием бэкапа для 2005 версии!  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Понял, принял! Видел такие надписи, но не верил!
6 ноя 17, 09:36    [20929520]     Ответить | Цитировать Сообщить модератору
 Re: Job с сжатием бэкапа для 2005 версии!  [new]
Den_KP
Member

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

Подскажите пожалуйста, а чем можно сжать на постоянной основе с расписание? Ну и конечно бесплатно)
6 ноя 17, 11:30    [20929654]     Ответить | Цитировать Сообщить модератору
 Re: Job с сжатием бэкапа для 2005 версии!  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
например
Hack Together Backup Compression in SQL 2005
6 ноя 17, 11:37    [20929663]     Ответить | Цитировать Сообщить модератору
 Re: Job с сжатием бэкапа для 2005 версии!  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Оставлю это тут

use master
go
-- Удаляем процедуру, если она существует
if object_id ( 'dbo.BackupWithArchive', 'P' ) is not null
  drop procedure dbo.BackupWithArchive
go

create procedure dbo.BackupWithArchive
(
    @BackupCommand nvarchar (4000) = 'help' -- стандартные команды бэкапирования
  , @BackupFile    nvarchar (1024) -- имя Backup-файла
  , @ArchCommand   nvarchar (128)  = ' a -r -mx ' -- параметры архивирования
  , @ArchFile      nvarchar (1024) -- имя архива 
  , @DeleteAfterArchive bit = 0    -- удаление бэкапа после архивирования

)
as
set nocount on

declare @archiver nvarchar (256)
      , @cmd nvarchar (512)
      , @file_exists int
      , @error int
	  , @fileDate nvarchar(20)
    SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112)     
  set @error = 0 
  -- Архиватор 7-zip  
  set @archiver = N'"C:\Program Files (x86)\7-Zip\7z.exe"'

  -- Список параметров архивирования
 
  if ( @BackupCommand = 'help' ) or ( @BackupCommand = '?' )
  begin
    set @cmd =  @archiver + ' -?'
    exec @error = master..xp_cmdshell @cmd
    select @error = @@error where @@error != 0
    return @error
  end

  -- Само Бэкапирование в динамике
  exec @error = master..sp_executesql @BackupCommand
  select @error = @@error where @@error != 0
  if ( @error != 0 ) 
    return @error

  -- Проверяем существование Backup-файла
  set @file_exists = 0
  exec @error = master..xp_fileexist @BackupFile, @file_exists out
  select @error = @@error where @@error != 0
  if ( @file_exists = 0 ) or ( @error != 0 ) 
  begin
    select 'Backup-файл не найден!'
    return @error 
  end

  -- Само архивирование
  set @cmd = @archiver + ' ' + @ArchCommand + ' ' + @ArchFile + ' ' + @BackupFile
  exec @error = master.dbo.xp_cmdshell @cmd
  select @error = @@error where @@error != 0
  if ( @error != 0 ) 
    return @error

  --Удаляем сам Бэкап
  if ( @DeleteAfterArchive = 1 )
  begin
    set @cmd = 'del ' + @BackupFile
    exec @error = master.dbo.xp_cmdshell @cmd
    select @error = @@error where @@error != 0
    return @error
  end

  return @error
go


Сообщение было отредактировано: 7 ноя 17, 13:15
7 ноя 17, 12:21    [20932195]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить