2011-12-27 3 views
5

У нас есть программа на C#, которую планируется запустить в планировщике задач в Windows Server 2003, предназначенную для удаления устаревших файлов в папке на основе информации, полученной из нескольких баз данных Oracle. Я могу выполнить приложение вручную, и все работает отлично - зарегистрировалось либо как я с правами администратора, либо зарегистрировалось как назначенный пользователь задачи с правами пользователей.Ошибка Oracle в планировщике заданий

Когда пользователь задача регистрируется от машины, хотя, приложение не будет работать на каждой базе данных с одной из двух ошибок: либо

ORA-12504: TNS: слушатель не получил SERVICE_NAME в CONNECT_DATA

или

ORA-12154: TNS: не удалось разрешить идентификатор подключения указанного.

Все эти базы данных используют строку подключения (полученную от другого, SQL Server, базу данных), которая, как я уже говорил ранее, подключается и работает нормально при работе вручную. Я был повсюду в Интернете, ища советы, которые могут быть применимы к этому обстоятельству, и не придумали окончательного ответа.

Есть ли кто-нибудь, кто читает это сообщение, кто может знать ответ на эту проблему? Любые предложения приветствуются.

+0

Какой метод вы используете для подключения к Oracle DB? OLE DB? ADO.NET? ODBC? – Yahia

+0

К сожалению, мы используем OLE DB. –

+0

Task Scheduler обеспечивает среду выполнения, которая не является «полноценным рабочим столом», а OLE DB нуждается в такой среде, особенно. в отношении разрешений ... чтобы он работал с ADO.NET, который отлично работает в этом случае ... – Yahia

ответ

2

Какое задание вы планируете выполнять как? Один из тех пользователей, которых вы тестировали, или другую учетную запись?

Несмотря на это, это не похоже на проблему с разрешениями, так как переменная среды ORACLE_HOME не установлена. (Похоже, что ваша программа, вероятно, пытается подключиться через файл tnsnames.ora, который не может быть найден.) Возможно, вам нужно будет запустить запланированную задачу для запуска пакетного файла, который устанавливает среду, а затем продолжает вызывать вашу программу на C#.

+0

Если вы запускаете это вручную, это заставляет меня задаться вопросом, может ли процесс пакетного файла, если он запущен из пакетного процесса, параметры командной строки перепутаны или переменные среды не устанавливаются или не сохраняются должным образом при выполнении процесса пакетного файла. работая вручную, вы считаете, что это даст те же результаты. Проверьте все зависимостей между файлами, связанными с этой запланированной задачей .. что если он указывает на неправильную БД или сервер в сохраненном пакетном файле .. ?? Возможно, это строка подключения, указывающая на тестовый сервер или тот, который не существует ... просто Q & A – MethodMan

+0

Это тоже было мое первое впечатление, но в миксе нет файла TNSNAMES.ORA - все это делается через строки подключения.Вот пример: DRIVER = {Oracle в Orahome}; DBQ = VPDEV1.WORLD; UID = web_app; PWD = web_app; –

+0

@MikePreston Для подключения строк требуется либо TNSNAMES.ORA, либо ONAMES-сервер для работы - иначе он не сможет решить 'VPDEV1.WORLD'! – Yahia

2

У меня были похожие проблемы, но с некоторыми приложениями java. То же самое произошло - ручное выполнение задачи было прекрасным, но автоматическое выполнение всегда терпело неудачу (та же учетная запись!).

Проверьте с вашим администратором (или, может быть, вы можете сделать это самостоятельно) и установите свое приложение C# для запуска учетной записью администратора (только для тестирования!) Или посмотрите, есть ли какие-либо другие запланированные задачи и допросите их, чтобы посмотреть, какие окна которые они используют и как они настроены. Я помню, что нам (I + admin) пришлось немного поэкспериментировать, но, наконец, он создал новую привилегированную учетную запись (копию другого существующего) для выполнения запланированной задачи.

Смежные вопросы