頻繁に増加しているクライアントで断続的なエラーを引き起こしているスタンパーがあります。
データを処理し、Windows Server 2008 で実行されている Timberline という会計パッケージから読み取るアプリケーションがあります。Timberline システムは Pervasive データベースを使用し、アプリは DSN を使用する ODBC ドライバーを介して通信しました。
考えられる最も簡単な手順でこの問題を再現できるように、アプリケーションを簡素化し、簡単なテスト アプリを作成しました。私のテスト アプリは C# で作成されており、次の 3 つのことを実行できます。
1) DSN を使用して ODBC 接続を開きます - これは常に機能します 2) ORDER BY 句を使用せずに単純な SELECT クエリを実行します - 動作します 3) ORDER BY 句を使用して単純な SELECT クエリを実行します - エラー!
エラーは不可解です:
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」ファイルを削除することです。ただし、このプログラムは 1 日に数回実行され、その「3」ファイルが不思議なことに頻繁に表示されます。このファイルを作成している可能性のある人はいますか? そのファイルのソースを見つけることができれば、それを止めることができるかもしれません. プロセスが実行される前に毎回単純に削除することは、完全に有効な解決策ですが、厄介です。
ODBC クライアントまたは Pervasive データベースを制御できないことに注意してください。私のアプリケーションはそのシステムを所有しておらず、単に通信しているだけです。