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

Откуда:
Сообщений: 8
Добрый день Форумчане!
По долгу службы столкнулся с проблемой бэкапов, началось с планов, потом Джобы, теперь Джоб + Архивация. Все шло неплохо, но столкнулся с нехваткой знаний, проблема в том что не могу банально подцепить в бэкап метку даты. Добавил @fileDate nvarchar(20), но не срабатывает. Пробовал разные варианты, но в любом случае метка не цепляется. Буду очень признателен на материал или подсказку!
Хранилка:

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 + @fileDate +' -?'
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

Сам Джоб:
exec dbo.BackupWithArchive
@BackupCommand = ' backup database db6 to disk = ''C:\db6.bak'''
, @BackupFile ='C:\db6.bak'
, @ArchCommand = ' a -r -mx '
, @ArchFile = 'C:\db6.7z'
, @DeleteAfterArchive = 1
7 ноя 17, 11:31    [20931951]     Ответить | Цитировать Сообщить модератору
 Re: Проблема со слабоумием в хранимой процедуре.  [new]
cyx
Member

Откуда: Москва
Сообщений: 9959
Den_KP,

В раздел Работа потому-что Джоб?
7 ноя 17, 12:02    [20932137]     Ответить | Цитировать Сообщить модератору
 Re: Проблема со слабоумием в хранимой процедуре.  [new]
Den_KP
Member

Откуда:
Сообщений: 8
Ахахаха, можно сказать и так :)
7 ноя 17, 12:18    [20932188]     Ответить | Цитировать Сообщить модератору
 Re: Проблема со слабоумием в хранимой процедуре.  [new]
SQL2008
Member

Откуда:
Сообщений: 3222
Den_KP
Буду очень признателен на материал или подсказку!

Все уже изобретено до вас !
Зачем вам новый кривоколёсный велосипед?
7 ноя 17, 13:39    [20932508]     Ответить | Цитировать Сообщить модератору
 Re: Проблема со слабоумием в хранимой процедуре.  [new]
Den_KP
Member

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

Так дело в том, что я с этого начал, но он не работает под 2005 sql.
7 ноя 17, 14:44    [20932865]     Ответить | Цитировать Сообщить модератору
 Re: Проблема со слабоумием в хранимой процедуре.  [new]
Den_KP
Member

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

Там есть магическая вещь как @Compress и 2005 не ферштейн его. А остальные гуд!
7 ноя 17, 14:50    [20932891]     Ответить | Цитировать Сообщить модератору
Все форумы / Работа Ответить