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

Откуда: оттуда
Сообщений: 360
Вставил в шаг джоба удаление старых архивов, архивирование баков и копирование архива в определенную папку, все с помощью cmdshell:

EXEC xp_cmdshell 'del E:\MSSQL2005\Backup\UsersDB\*.rar'
GO
EXEC xp_cmdshell 'D:\progra~1\winrar\rar.exe a -agDD-MM-YYYY -rr -m1 E:\MSSQL2005\Backup\UsersDB\MT_.rar E:\MSSQL2005\Backup\UsersDB\*.bak'
GO
EXEC xp_cmdshell 'xcopy E:\MSSQL2005\Backup\UsersDB\*.rar E:\MSSQL2005\Backup\7-day_Copy\ /z /y'
GO


джоб с оповещением по шагам. Оповещение пишет, что все нормально, но архивы не делаются в связи с нехваткой места. Причем это обнаружил только что, и все это время сервер возвращал положительный результат работы джоба.
Как сделать, что бы при работе cmdshell серсер возвращал отчет о проделанной или непроделанной работе сторонней программой (winrar)?

SQL Server 2005 SP4
21 окт 11, 13:02    [11478255]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А зачем вы так? В джобе ж можно и команду операционной системы выполнить (cmd). Не?
21 окт 11, 13:07    [11478309]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Glory
Member

Откуда:
Сообщений: 104751
Наверное надо получать и анализировать код завершения xp_cmdshell ?
С условием, что rar продуцирует для успешных и неуспешных попыток разные результаты

ЗЫ
21 окт 11, 13:09    [11478326]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Ёжик25
Member

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

ну вот так получилось)) тем более мне кажется, что при том, что вы предложили, все равно не будет возвращаться результат
21 окт 11, 13:11    [11478339]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ёжик25
все равно не будет возвращаться результат

Возвращать результат и обрабатывать его - это разные вещи
Вы ждете автоматической обработки и прерывания скрипта что ли ?
21 окт 11, 13:14    [11478370]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Ёжик25
Member

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

нет, мне надо, что бы на почту проходило сообщение, что степ не выполнился. а сейчас приходит - что все сработало.
21 окт 11, 13:34    [11478531]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ёжик25
нет, мне надо, что бы на почту проходило сообщение, что степ не выполнился. а сейчас приходит - что все сработало.

Еще раз вопрос
Вы ждете автоматической обработки ошибок досовских команд ?
21 окт 11, 13:46    [11478605]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Ёжик25,

http://comp.site3k.net/?/ibmpc/chaptr28.html
21 окт 11, 13:56    [11478692]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Ёжик25
Member

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

ну если я правильно понял, (если нет, поправте меня) разъясняясь простым языком, cmdshell вызывает досовскую команду, которая запускает винрар. У нас не срабатывает винрар (из за нехватки места), и получается что скульник не видит этого, тем более через досовскую команду, скульник дос запустил - запустил, значит степ выполнился - выполнился -> посылается отчет об успешном выполнении степа, но в целом архив не создался.... - выходит, что надо, что бы SQL залезал в системные логи и смотрел отчеты о работе рара?
21 окт 11, 14:01    [11478748]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Ёжик25,

Зачем? Просто проверяйте существование файла (или его отсутствие) на диске, можно ещё размер узнать.

Ещё пример, подобной задачи
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=676905
21 окт 11, 14:03    [11478763]     Ответить | Цитировать Сообщить модератору
 Re: cmdshell в джобе не возвращает результат  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ёжик25
ну если я правильно понял, (если нет, поправте меня) разъясняясь простым языком, cmdshell вызывает досовскую команду, которая запускает винрар. У нас не срабатывает винрар (из за нехватки места), и получается что скульник не видит этого, тем более через досовскую команду

Да, не видит
Но никто вам не мешает самому обрабатывать результаты cmdshell

Ёжик25
выходит, что надо, что бы SQL залезал в системные логи и смотрел отчеты о работе рара?

Какие еще системные логи ? Достаточно посмотреть, что возвращает cmdshell
21 окт 11, 14:23    [11478920]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить