Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Доброго дня Форумчане! Прошу Вашей помощи, имеется 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] Ответить | Цитировать Сообщить модератору |
Yasha123 Member Откуда: Сообщений: 1955 |
Den_KP, сжатие бэкапа самим сиквелом доступно с 2008 версии, так что проверка версии в скрипте сделана не от балды. Сжимайте внешним архиватором |
6 ноя 17, 09:28 [20929512] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Понял, принял! Видел такие надписи, но не верил! |
6 ноя 17, 09:36 [20929520] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Yasha123, Подскажите пожалуйста, а чем можно сжать на постоянной основе с расписание? Ну и конечно бесплатно) |
6 ноя 17, 11:30 [20929654] Ответить | Цитировать Сообщить модератору |
Yasha123 Member Откуда: Сообщений: 1955 |
например Hack Together Backup Compression in SQL 2005 |
6 ноя 17, 11:37 [20929663] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Оставлю это тут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 | ![]() |