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

Откуда:
Сообщений: 812
Здравствуйте. Имеется файл на диске, допустим '1.doc'. Необходимо добавить его в одноименный архив с помощью хранимой процедуры. Не получается заархивировать файл. Подскажите что я упустила?

alter procedure archiv

@filename as varchar(20),
@path as varchar(50)
as
begin

declare @cmd varchar (100)

SET @cmd = @path + '\7z a '
SET @cmd = @cmd + '\' + @filename + '.ZIP '
EXEC master..xp_cmdshell @cmd

end
2 дек 12, 17:50    [13564612]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
qwerty112
Guest
НадеждаМ
Не получается заархивировать файл.


К сообщению приложен файл. Размер - 5Kb
2 дек 12, 17:55    [13564622]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Ошибок не выдает, но и архива в ожидаемом месте я не увидела.
2 дек 12, 18:11    [13564674]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
qwerty112
Guest
НадеждаМ
Ошибок не выдает, но и архива в ожидаемом месте я не увидела.

где "Ошибок не выдает" ?
вы процедуру - вызываете где ?
2 дек 12, 18:16    [13564690]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
НадеждаМ
Member

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

Процедуру запускаю на сервере. Ошибок не выдает, зато кучу файлов мне в архив запихала.

Решила попробовать на компьютере, где установлен
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Здесь так же установлен 7z.
При выполнении процедуры

alter procedure archiv

@filename as varchar(20),
@path as varchar(50)
as
begin

declare @cmd varchar (100)

SET @cmd = @path + '\7z a '
SET @cmd = @cmd + '\' + @filename + '.ZIP '
print @cmd

EXEC master..xp_cmdshell @cmd

end


получился результат см. во вложениях и создался архив 1.doc.zip на диске C большого размера. Чуть весь диск C не заархивировала.
2 дек 12, 20:10    [13565142]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Всем спасибо. Разобралась.

Изменила процедуру


alter procedure archiv

@filename as varchar(50),
@path as varchar(50)
as
begin

declare @cmd varchar (100), @zipname varchar(50)

set @zipname=substring(@filename,1,len(@filename)-4)
print @filename

SET @cmd = @path + '7z a '
SET @cmd = @cmd+ @path+ @zipname+'.ZIP ' + @path+@filename

EXEC master..xp_cmdshell @cmd

set @cmd = 'del ' + @path+@filename
EXEC master..xp_cmdshell @cmd
end

Теперь нужный 1 файл архивируется.
2 дек 12, 20:11    [13565146]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
BorisS
Member

Откуда: Москва
Сообщений: 587
НадеждаМ
Теперь нужный 1 файл архивируется.


До тех пор, пока расширение архивируемого файла состоит из трех символов...
3 дек 12, 01:49    [13566146]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
НадеждаМ
Member

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

А мне и надо другие расширения трогать.
5 дек 12, 20:12    [13584138]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
НадеждаМ
Member

Откуда:
Сообщений: 812
Точнее не надо те файлы брать, расширения которых больше 3 символов.
5 дек 12, 20:15    [13584156]     Ответить | Цитировать Сообщить модератору
 Re: заархивировать файл на диске с помощью хранимой процедуры  [new]
BorisS
Member

Откуда: Москва
Сообщений: 587
Расширение может и из двух символов состоять. Тот же архив *.7z - два символа. А может вообще не иметь расширения...
6 дек 12, 11:38    [13586617]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить