2017-12-01 15 views
0

アプリケーションがネットワーク上の.mdbファイルに接続します。コンピュータを32ビットのWindows 7から64ビットのWindows 10に交換するまでは、すべて問題ありませんでした。このアクションは、C#コードを使用してデータベースに接続することで時間がかかります。アプリケーションを起動してから1秒以下の時間から始まります。アプリケーションを実行した後ca. 8時間、データベースファイルのオープンには10秒以上かかる。 Ca. 5秒ごとにアクセスデータベースが接続されます。.mdbのデータベース接続が時間の経過とともに低下する

アプリケーションの再起動後、すべて正常です。頻繁に再起動することは、長期的な選択肢ではありません。クエリ自体は数msで完了し、クローズもOKです。 私は、プロセッサ使用率が約10%にすぎないことを見てきました。メモリ私は現時点では分かりません。

なぜデータベースに接続するのが時間の経過とともに減速するのか、誰もが知っていますか?したがって

public void OpenDb (string _sOpenString) 
{ 
    this.sFilePathToAccessDb = _sOpenString; 
    this.sConnectionString = 
     @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=" + this.sFilePathToAccessDb; 
    this.oOleDbConnection = 
     new System.Data.OleDb.OleDbConnection(this.sConnectionString); 
    this.oOleDbConnection.Open(); 
} 

public void CloseDb() 
{ 
    if (this.oOleDbConnection != null) 
    { 
     this.oOleDbConnection.Close(); 
     this.oOleDbConnection.Dispose(); 
    } 
    this.oOleDbConnection = null; 
} 

public void foo() 
{ 
    OpenDb(@"\\fooserver\databases\bar.mdb"); 
    //do some stuff 
    CloseDb(); 
} 
+0

「OpenDb」は起動時に呼び出されますか?または複数回ですか? – mjwills

+0

ご迷惑をおかけします。異なる呼び出しで開くために、異なるAccessデータベースがあります。したがって、我々は 'OpenDb'を複数回呼び出します – Noran

+0

接続文字列に追加されたmode = readを知っています。お待ちしております。 – Noran

答えて

0

いくつかのテストの後、それは我々がマシン上Microsoft Access Database Engine 2010バージョン14をインストールしていること、が判明しました。このバージョンをアンインストールしてバージョン12.0をインストールした後は、すべて問題ありません。ネットワークドライブ上のデータベースを開くと、安定した30ミリ秒がかかります。

関連する問題