Как успешно запустить командный файл в задании агента SQL?
Уважаемые пользователи Stackru!
У меня есть задание агента SQL, которое генерирует определенный отчет в PDF-файле, а затем копирует PDF-файл в сетевой каталог, а затем удаляет PDF-файл в исходном каталоге.
Задания SQL состоят из 2 этапов: 1. Создать отчет 2. Скопировать отчет в сетевую папку.
Для шага 2 я создал bat-файл, который обрабатывает копирование и удаление файла pdf.
Bat-файл выглядит следующим образом:
set source_dir=C:\Reports\Energie\Uur
set dest_dir=\\KWS2-WEB-SERVER\Share\Reports\Uur
C:\Windows\System32\Robocopy.exe %source_dir% %dest_dir% /MOV /Z
Однако, когда я запускаю свою работу, она зависает на втором шаге. Статус просто остается на "Выполнено".
Это строка, которую я указал в шаге (местоположение исполняемого файла bat):
cmd.exe /c "C:\Reports\rapport_uur_copy.bat"
Мои настройки работы следующие:
Шаг 1
Тип: Операционная система (CmdExec) В случае успеха: перейдите к следующему шагу
При сбое: выход из отчета о сбое задания
Шаг 2
Тип: Операционная система (CmdExec)
В случае успеха: выйти из отчета об успехах
При сбое: выход из отчета о сбое задания
Некоторые факты:
- У меня есть разрешения на чтение / запись в сетевом каталоге
- Я запускаю шаги как администратор-аккаунт (вошедший в систему пользователь, по умолчанию)
- Шаг 1 успешен
- Я использую Windows Server 2008 R2 Standard
- У меня SQL Server 2008 R2
- Когда я запускаю скрипт из cmd вручную, он работает (под учетной записью администратора).
Заранее спасибо!
1 ответ
Когда пакетный скрипт должен использовать диски не локальные, например, общие ресурсы, ему всегда нужны особые права, значит you need to use an account to run the script which is allowed to log on as batch task in secpol
- (нажмите Пуск, введите secpol.msc и запустите его. - Выберите "Локальные политики" в оснастке MSC. - Выберите "Назначение прав пользователя". - Щелкните правой кнопкой мыши "Вход в систему как пакетное задание" и выберите "Свойства" - Нажмите "Добавить пользователя или группу"). и включите соответствующего пользователя.)
тоже в обычной партии не возможно использовать \\drives
они должны отображаться как диски с символом, например V:\drive
и это отображение got to be made by the batch itself
с user account used running the batch
Я испытал это в моем сценарии.