Учетная запись службы имеет различное поведение базы данных в IIS и планировщике задач.

Я запускаю один и тот же сценарий как учетную запись приложения в IIS и как запланированную задачу, и я получаю очень разные результаты.

Из IIS (как веб-страница) я могу читать, например. свойства поля и выполнять очень простые запросы, такие как

SELECT * FROM SYSTEMINFO

Итак, подключение к базе данных есть.

Что-нибудь более «продвинутое», дает всевозможные ошибки:

SELECT SYSTEMINFOID FROM SYSTEMINFO
or
SELECT COUNT(*) FROM SYSTEMINFO
or
INSERT INTO SYSTEMINFO ( SYSTEMINFOID ) VALUES (1)

обычно выдает «[Microsoft] [Драйвер ODBC Microsoft Access] Неизвестно (SQL-42000)» или «[Microsoft] [Драйвер ODBC Microsoft Access] Переполнение (SQL-42000)», что означает «отсутствует доступ или синтаксическая ошибка» в соответствии с некоторыми ms обзоры сообщений об ошибках (Довольно широкая группа ошибок...)

Если учетная запись приложения является членом Администраторов, все работает нормально (но не очень хорошее решение), любое другое членство (пользователь, опытный пользователь, оператор резервного копирования) дает ту же ошибку. (необходимо перезагрузить сервер, чтобы такие изменения вступили в силу, поэтому отладка занимает много времени.)

У пользователя есть локальные политики «Заменить токен процесса» и «Настроить квоты памяти» (а также запустить как пакет + сервис).

Среда выглядит так же (за исключением того, что в IIS добавлена ​​веб-среда), и я вижу в диспетчере задач, что сценарии запускаются от имени учетной записи приложения.

строка подключения

DBI:ODBC:driver=Microsoft Access Driver (*.mdb);DBQ=C:\folder\Demo.mdb;

работает CGI, Perl 5.18, DBI, на IIS 8.5 Win2012 std, пул приложений использует учетную запись приложения с загрузкой профиля пользователя и олицетворением пользователя как True

Настройка же на Win 2008 R2 работает нормально.

Подключение к, например. локальная база данных ms sql express выдает ошибки SSL, даже если SSL не используется, и использует учетную запись sql для аутентификации.

Потратил четыре дня на просмотр всех странных комбинаций, какие-нибудь предложения по настройкам, которые я мог упустить?

(резюме: при запуске от имени учетной записи приложения, не являясь администратором в iis 8.5, скрипт работает, подключение к базе данных работает, но все, что выходит за рамки тривиальных запросов, приводит к нечетным ошибкам.)


person FtLie    schedule 24.05.2015    source источник
comment
Я думаю, это проблема привилегий. Расположение вашего mdb кажется странным. Попробуйте переместить его в другое место и сделать доступным для чтения и записи для всех пользователей.   -  person Tim3880    schedule 24.05.2015
comment
должна быть папка\Demo.mdb (исправлено), все пользователи имеют полный контроль (!) над этой папкой (в качестве теста, пытаясь найти решение). Я больше предполагаю, что пользователь на самом деле не работает под учетной записью приложения, как 100% , всего 99% (т.е. я могу прочитать свойства поля и выбрать всю строку, но не конкретное поле, я также вижу, что у меня есть среда от пользователя, но ограничены права на запись во временную папку пользователя.   -  person FtLie    schedule 24.05.2015
comment
Думаю, мне следует обратить внимание на олицетворение, пользователя пула, среду загрузки и некоторые связанные функции в IIS 8.5, но я не могу вспомнить ни о каких соответствующих.   -  person FtLie    schedule 24.05.2015


Ответы (1)


Наконец нашел решение: в IIS 8.5 для работы служебной учетной записи тот же пользователь (как пользователь пула) должен быть установлен в качестве сквозной аутентификации приложения.

Создание приложения на веб-сайте, выбор основных настроек для этого приложения, назначение его в отдельный пул, управляемый служебной учетной записью, было недостаточным.

Кроме того, «Сквозная аутентификация» должна быть установлена ​​для того же пользователя, выбрав кнопку «Подключиться как…».

person FtLie    schedule 02.06.2015