質問

アプリケーションの1つで問題が発生しています。 .NET 3.5 32ビットプロセスです。起動時に、.mdbを開いていくつかの「メタデータ」を読み取ります。値。これは何百ものシステムで機能しますが、TabletPCを使用しているお客様には問題があります。オペレーティングシステムは、Windows XP Tablet PC SP3、32ビット、bla blaです。珍しいことはありません。 .NET 3.5(Windows Update以降)がすべて最新です。異常なことは何もありません。

アプリケーションは「いくつかのこと」を行うため、起動時に、私はこれまでで最も単純なコンソールアプリケーションを作成しました。

namespace TestAccessConnection
{
    class Program
    {
        static void Main( string[] args )
        {
            OleDbConnection connection;
           try
            {
                connection =
                    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=metadata.mdb;Persist Security Info=False");
                connection.Open();
                connection.Close();
                Console.Read();
            }
            catch ( Exception e )
            {
                Console.WriteLine(e.ToString());
                Console.Read();
            }
        }
    }
}

結果:

ファイル" metadata.mdb"なしで単一の.exeを実行した場合同じパスで、「ファイルが見つかりませんbla bla bla」という明らかな結果が得られます。正しいです。

メタデータをコピーすると(メタデータの詳細)、次のようになります:

System.OutOfMemoryException: An exception of type 'System.OutOfMemoryException' has occurred.
  at System.Data.Common.ADP.IsSysTxEqualSysEsTransaction()
  at System.Data.Common.ADP.NeedManualEnlistment()
  at System.Data.OleDb.OleDbConnection.Open()
  at TestAccessConnection.Program.Main(String[] args

注:例外はスペイン語で、翻訳しましたが、内容は同じままで、唯一の違いは「タイプの例外」ですが、名前空間は変更されていません

メタデータの内容: これは、1つのテーブルといくつかのレコードを含む単純なMS ACCESS 2000ファイルです(異なるMS-SQL接続文字列を暗号化された形式で格納します)。異なる接続。 connection.Open()で例外が(明らかに)スローされるため、作成したテストプログラムにはその機能は存在しません(または実行されません)。

このコンピューターの詳細 ボックスは正常なようです。さまざまなソース(Windows Update)およびdotnetfx.exe(大きな250mbファイル)から.NETを再インストールし、「修復」を実行しました。その大きな.netインストーラーから。 この小さなコンソールアプリケーションは.NET 3.5を対象としているため、.NETは動作しているようです。

このテストを行う理由 コンソールアプリケーションがそれだけを行う理由は、(他のいくつかのことの中でも)独自のアプリケーションがMain()の実行を開始するとすぐに、それが最初に行うことの1つであるためです。例外がそこでスローされていることがわかりました。コードに何も関係がないことを確認するために、テストアプリケーションを作成し、奇妙な例外を見つけました。

Googleはどうですか google / SO / etcを必死に検索しています。無駄に。 OutOfMemoryは、oledbやその他の「可能」な要素と組み合わせた場合でも、非常に誤解を招く検索用語です。キーワード(何かが足りないかもしれません)。名前空間の他の部分を使用して検索しようとすると、この特定の問題に関連していないように見える奇妙な結果が示されます。

質問とは ああ、それは簡単です:アイデアはありますか?

キャッチ 私は、Windows全体を再インストールすることを避けようとしています(この簡単なことは他の何百ものコンピューターで動作するので、問題を解決するかもしれません)。このボックスはマルウェアなどに感染していないようです。ヘルスケアで使用されているタブレットPCですので、「オープン」でもインターネットにアクセスできます。使用される場合はほとんど使用されません。 これは、ボックスが100%きれいであることを意味するものではありません(Windowsを使用することで、確実なことはありえません)。 この問題を知っている、または経験している(および修正を見つけた)場合は、教えてください。

事前に感謝します!

役に立ちましたか?

解決

これはもう1年以上前から死んでいます。それ以来、私は単一の小さなXMLファイルを使用するようにコードを移植しました。それ以来、問題はありませんでした。

基本的にアプリが起動し、XMLが検出されない場合、MDBを探し、見つかった場合はそれを開こうとします(常にエラーの可能性をキャッチします)、開くことができる場合は読み取りますコンテンツを作成してXMLを作成し、保存してMDBを永久に閉じます:)

これまでに1000台を超えるマシンで動作しましたが、メモリエラーの原因はまだ不明です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top