Timberline ODBC Ошибка с переменной среды TEMP - PullRequest
0 голосов
/ 05 июля 2011

У меня есть stumper, который вызывает периодическую ошибку на клиенте, частота которого увеличивается.

У меня есть приложение, которое обрабатывает данные и читает данные из пакета учета под названием Timberline, работающего на Windows Server 2008. Система Timberline использует базу данных Pervasive, и мое приложение связывалось с ней через драйвер ODBC с помощью DSN.

Я сократил свое приложение и написал простое тестовое приложение, чтобы я мог воспроизвести эту проблему с помощью самых простых шагов, которые я могу придумать. Мое тестовое приложение на C #, и оно может делать 3 вещи:

1) Откройте соединение ODBC с помощью DSN - это всегда работает 2) Выполнить простой запрос SELECT без предложения ORDER BY - работает 3) Выполнить простой запрос SELECT с предложением ORDER BY - ошибка!

Ошибка загадочная:

System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]Unable to open SWPFile.
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]File Manager: Unable to open file.Operating system LastError = 123
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]Bad operation for current SWP mode
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]function i32AddColumn was called in Closed mode
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]General Error in Internal Tables
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]Unable to open SWPFile.
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]Bad operation for current SWP mode
    ERROR [HY000] [Sage Timberline Office][Sage Timberline Office ODBC Driver]General Error in Internal Tables

Это не очень полезно. Но, наблюдая за ProcessMonitor, я вижу, что мое приложение обращается к папке, заданной в переменной среды TEMP:

C:\Users\Partners\AppData\Local\Temp\3

Эта проблема возникает, когда в этом месте есть ФАЙЛ с именем "3", а не ПАПКА с именем "3". Таким образом, некоторый процесс ожидает папку с именем «3» или возможность создания такой папки. Если файл «3» существует, то я получаю эту ошибку. Я могу воспроизвести это надежно. Я также думаю, что предложение ORDER BY не имеет прямого отношения к проблеме, а является лишь побочным эффектом основной проблемы.

Простое решение - удалить файл «3». Однако эта программа запускается несколько раз в день, и этот файл «3» загадочно появляется время от времени. У кого-нибудь есть идеи, что могло бы создать этот файл? Если бы я мог найти источник этого файла, я мог бы остановить его. Простое удаление его каждый раз перед запуском моего процесса - вполне правильное решение, но зато.

Обратите внимание, что я не контролирую клиента ODBC или базу данных Pervasive. Моему приложению не принадлежит эта система, он просто связывается с ней.

...