frozer
28-01-2009, 17:44
Добрый день.
При миграции на Windows 2008 столкнулись с проблемой выполнения пакетных файлов (cmd,bat) из Task Scheduler'а Windows 2008. Последовательность действий:
Способ 1:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Создаем задание, выставляем триггер запуска каждый час
3. Добавляем Action (Start a program) в виде:
Program/script - "c:\windows\system32\cmd.exe"
Additional parameters - /C c:\scripts\upload.cmd
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready
Скрипт такого содержания:
@echo off
SET FTPPASS=d41d8cd
SET FTPUSER=ftpmaster
SET FTPDIR=/
SET FTPSERV=www.site.local
SET FILE=C:\scripts\output\servicelists.csv
"C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe" RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T
c:\scripts\ncftpput -E -u %FTPUSER% -p %FTPPASS% -U 113 %FTPSERV% %FTPDIR% %FILE% >> c:\scripts\replication.log
Способ 2 (начну сразу с п.3):
3. Добавляем Action (Start a program) в виде:
Program/script - "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe"
Additional parameters - RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready
Способ 3:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Запускаем cmd.exe
3. Набираем "c:\scripts\upload.cmd
4. все отрабатывает нормально, файлы создаются там где надо, и отправляются согласно инструкциям в скрипте.
Окружение:
Пользователь не администратор, на уровне политики безопасности разрешен logon as batch job, является владельцем каталога куда должны записываться данные. Кратковременное наделение его правами администратора ситуацию не изменило - cmd и bat скрипты не запускаются. Журнал событий по данному заданию благостен - "Task Completed successfully ..."
А вот теперь самое интересное - если запускать к примеру "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\isql.exe" (оптимизация баз и т.п.) то все нормально отрабатывает под этим же пользователем в автоматическом режиме по расписанию. Из скрипта (по тому же расписанию) - ни в какую.
И еще - на старом сервере (Windows 2003 R2) все эти скрипты работают как надо. Для очистки совести, поставили свежий 2003 R2 - работают.
Вторая неделя гугления пока ничего не дала, точнее в паре форумов вопрос по невыполняющиеся скрипты задавался, но ответом вопрошающе не получили.
Заранее спасибо.
При миграции на Windows 2008 столкнулись с проблемой выполнения пакетных файлов (cmd,bat) из Task Scheduler'а Windows 2008. Последовательность действий:
Способ 1:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Создаем задание, выставляем триггер запуска каждый час
3. Добавляем Action (Start a program) в виде:
Program/script - "c:\windows\system32\cmd.exe"
Additional parameters - /C c:\scripts\upload.cmd
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready
Скрипт такого содержания:
@echo off
SET FTPPASS=d41d8cd
SET FTPUSER=ftpmaster
SET FTPDIR=/
SET FTPSERV=www.site.local
SET FILE=C:\scripts\output\servicelists.csv
"C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe" RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T
c:\scripts\ncftpput -E -u %FTPUSER% -p %FTPPASS% -U 113 %FTPSERV% %FTPDIR% %FILE% >> c:\scripts\replication.log
Способ 2 (начну сразу с п.3):
3. Добавляем Action (Start a program) в виде:
Program/script - "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe"
Additional parameters - RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready
Способ 3:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Запускаем cmd.exe
3. Набираем "c:\scripts\upload.cmd
4. все отрабатывает нормально, файлы создаются там где надо, и отправляются согласно инструкциям в скрипте.
Окружение:
Пользователь не администратор, на уровне политики безопасности разрешен logon as batch job, является владельцем каталога куда должны записываться данные. Кратковременное наделение его правами администратора ситуацию не изменило - cmd и bat скрипты не запускаются. Журнал событий по данному заданию благостен - "Task Completed successfully ..."
А вот теперь самое интересное - если запускать к примеру "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\isql.exe" (оптимизация баз и т.п.) то все нормально отрабатывает под этим же пользователем в автоматическом режиме по расписанию. Из скрипта (по тому же расписанию) - ни в какую.
И еще - на старом сервере (Windows 2003 R2) все эти скрипты работают как надо. Для очистки совести, поставили свежий 2003 R2 - работают.
Вторая неделя гугления пока ничего не дала, точнее в паре форумов вопрос по невыполняющиеся скрипты задавался, но ответом вопрошающе не получили.
Заранее спасибо.