У меня есть 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. Моему приложению не принадлежит эта система, он просто связывается с ней.