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

Откуда: Кемерово
Сообщений: 1055
Здравствуйте.
Надо на 1ом шаге проверить наличие файла и затем на 2ом шаге сделать в зависимости от результата какие то действия или не делать ничего.
Т.е. если файла нет - перейти шаг 2, если файл есть - перейти шаг 3. Так можно? Наличие файла проверяет "if EXIST E:\1.txt echo 1", но вот что делать дальше не понятно.
Заранее спасибо.
15 фев 12, 07:53    [12093019]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
Glory
Member

Откуда:
Сообщений: 104760
Написать все это в одном bat файле и запускать его
15 фев 12, 10:00    [12093378]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
А SSIS не хотите использовать? Там это всё легко решается и пакет легко вставляется в Job.
15 фев 12, 10:48    [12093600]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
smoyk
Member

Откуда: Кемерово
Сообщений: 1055
Jovanny,

Разве в SSIS можно проверить наличие файла?
15 фев 12, 11:19    [12093824]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
uncle_max
Member

Откуда:
Сообщений: 70
Вот вам, для примера, простой T-SQL script
declare @result int, @filename varchar(255)
set @filename = 'c:\Msdos.sys'
--xp_fileexist - недокументированная процедура, используйте осторожно
exec xp_fileexist @filename, @result out 
if @result = 1
	begin
		print 'File exists'
	end
else
	begin
		print 'File does not exist'
	end
16 фев 12, 08:03    [12100325]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
smoyk
Jovanny,

Разве в SSIS можно проверить наличие файла?


Канэшна. Script Task и .Net язык.

http://www.bidn.com/blogs/DevinKnight/ssis/76/does-file-exist-check-in-ssis
http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/8a32c726-6067-413e-977b-b3e8b375bf22/
16 фев 12, 11:41    [12101612]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
FreeLSD_md
Member

Откуда:
Сообщений: 4
Решил не множить темы, такая ситуация: Job по созданию и архивированию БД. Задача банальная - выгрузить бакап БД в файл Daily.bak, после чего на след шаге с помощью CmdExec пакуем получившийся файл с помощью архиватора Rar.
Проблема в том, что тот самый шаг типа Operatin System CmdExec на котором запускается архивирование рапортует фэйл.
Код скрипта:
@echo off
D:
cd "D:\!Backups\CVSUDSQL"
FOR /F "Skip=50" %%i in ('dir /aa /O:-D  /b /TC "D:\!Backups\CVSUDSQL\*.rar" ') do del "D:\!Backups\CVSUDSQL\%%i"
FOR /F "tokens=1,2,3,4* delims==. " %%n IN ('date /t') DO set name=%%n-%%o.rar
rar a %name% -rr "D:\!Backups\CVSUDSQL\Daily.bak"


лог:
,Executed as user: ACCOUNT\система. The process could not be created for step 4 of job 0x593C049CF6979F44BCA562E53E046D4B (reason: Не удается найти указанный файл). The step failed.,00:00:00,0,0,,,,0


Наверняка у кого-то встречалось не 1 раз. Сам файл скрипта есть. Предполагаю, что в логе ошибки речь идёт о файле, который используется в коде скрипта(значение пути файла - полный путь относительно диска) Но сам файл существует, путь к нему в скрипте прописан верно, перепроверял несколько раз. Если запускать скрипт руками, то он работает нормально, т.о. можно сделать вывод, что сам скрипт тоже вполне рабочий! Друзья, подскажите, что можно проверить?

служба SQL Server Agent должна быть членом локальной группы Administrators
(Администраторы), чтобы использовать возможность автоматического перезапуска
или создавать задания типов CmdExec

Станек Уильям Р. Microsoft SQL Server 2005. Справочник администратора /

Для меня не ясно, как служба м.б. членом локальный группы пользователей?!? Имеется ввиду имя учётки пользователя, от чьего имени будет выполнен запуск службы?! Прокомментируйте пожалуйста, кто осведомлён по данному вопросу!?

Дело в том, что как попытка изменить учётку, от чьего имени стартует SQL ServerAgent (конечно с перезапуском службы), так и Владельца (Owner) задания (Job) ни к чему не привели!



The Job was invoked by User SERVER\Администратор. The last step to run was step 4 (pack ). The job was requested to start at step 4 (pack ).,00:00:00,0,0,,,,0
10/03/2012 11:43:00,,Error,4,,Back Up Databases <c/> <c/>,pack ,,Executed as user: SERVER\Администратор. The process could not be created for step 4 of job 0x593C049CF6979F44BCA562E53E046D4B (reason: Не удается найти указанный файл). The step failed.,00:00:00,0,0,,,,0

Куда уж явнее !
8 окт 12, 12:37    [13283604]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
FreeLSD_md
Member

Откуда:
Сообщений: 4
в продолжение темы: есть продвижения - причиной вышеупомянутой ошибки в логе был знак собачки вначале скрипта - в первой строке отключение вывода сообщений: "@echo off" - так не работало, а "echo off" - так заработало, сам скрип по выполнению в Job'e возвращает 0 - Succeeded, но результат нулевой, как будто ничего не выполняется ... Подозреваю, что тут уже дело в самом скрипте(как в прочем и в первой проблеме) Не подскажите в чём может быть причина - при запуске вручную опять же скрипт правильно пакует bak-файл, создавая архив в соответствии с текущей датой. При запуске от Job'a - Succeeded, но результата нет. Итог:
echo off
D:
cd "D:\!Backups\SQL"
FOR /F "Skip=4" %%i in ('dir /aa /O /b /TC "D:\!Backups\SQL\*.rar" ') do del "D:\!Backups\SQL\%%i"
FOR /F "tokens=1,2,3,4* delims==. " %%n IN ('date /t') DO set name=%%n-%%o.rar
rar a %name% -rr Daily.bak
8 окт 12, 15:03    [13284964]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
FreeLSD_md
Member

Откуда:
Сообщений: 4
Да, кстати, Duration по логу - 0 секунд!
8 окт 12, 15:04    [13284971]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeLSD_md
в продолжение темы: есть продвижения - причиной вышеупомянутой ошибки в логе был знак собачки вначале скрипта

12093378
8 окт 12, 15:40    [13285335]     Ответить | Цитировать Сообщить модератору
 Re: Job CmdExec  [new]
FreeLSD_md
Member

Откуда:
Сообщений: 4
Glory, что вы имелли ввиду, если можно по-подробней!
8 окт 12, 16:57    [13285954]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить