2011-11-25 3 views
8

アクセスファイルを使用するCassiniアプリケーションがあります。更新されたインストーラは、アプリケーションとデータベースの両方を上書きします。ただし、アプリケーションはシステムの再起動後も古いデータを表示します。 (MDBファイルを手動でコピーして置き換えても問題がないことを確認してください。)Jet OLEDBドライバがMDBファイルをキャッシュする理由

新しいMDBデータを表示する唯一の方法は、新しいフォルダにインストールすることです。何が起こっているすべてのアイデア

Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
    HttpContext.Current.Server.MapPath("App_Data\\" + 
    ConfigurationManager.AppSettings.Get("dbfile")) + ";Jet OLEDB:Database Password=xxxx"; 

とキャッシングの問題を回避する方法:

接続文字列は、(私が思う)標準ですか?

更新(コメントでいくつかの質問に答えるために):

  • 私たちは、MDBは、カッシーニのアプリケーションによって更新されることはありません
  • だけのWindows 7上でこの問題を再現することができます。データベースを作成してユーザーに送信します。 - ファイルがインストーラによって正常に置き換えられたことを確認しました。実際には、手動で置き換えると同じことが起こります。
  • Windowsを再起動しても問題は解決しません。
+1

あなたはどのOSで作業していますか?それはVistaかWin7ですか? – mwolfe02

+1

データは古くなっていますか?以前はVB6のアプリケーションでJetのキャッシュに問題がありましたが、十分に速くフラッシュされていない書き込みに関連していました。 – Gabriel

+0

@ m0saしたがって、実行中のWebアプリケーションがあり、インストーラを実行して更新する必要があります。 .mdbファイルを置き換える前に、インストーラは正確にどのような操作を実行しますか? Webアプリケーションを停止しますか? IISサービスを停止しますか?そして、「システムの再起動」とはどういう意味ですか? (私たちが普通に言っているのは、「リブートウインドウ」です。)また、mwolfe02の質問に答えてください。重要です。 –

答えて

0

接続オブジェクトのCache Authorizationプロパティをfalseに設定します。これはデフォルトでtrueです。

http://msdn.microsoft.com/en-us/library/aa140022(v=office.10).aspx

+0

このプロパティは読み取り専用であり、Jetプロバイダにとって常にtrueです。 – m0sa

+0

許可キャッシュは、応用。このプロパティは、とにかく読み取り専用です。 – tomsame

0

あなたが "Microsoft.ACE.OLEDB.12.0" プロバイダを使用してみましたか?私はそれが来ると信じて7

1
  1. ゴーソリューションエクスプローラにWindowsにプリインストール
  2. 選択MDBファイルのプロパティへ
  3. ゴー、
  4. が新しい場合はコピーするように設定しコピーしない一つの特性があります
0

新しいWindows 7/Server 2008のセキュリティモデルは、ユーザーごとにいくつかの条件下でファイルの仮想化コピーを提示します。

インストールが完了した後に失礼なスナップショットをユーザーに提示するこのデザイン機能を使用している可能性はありますか?アプリケーションがデータベースをインストールするユーザーに異なる資格情報を使用する可能性はありますか?

User Account Control Data Redirectionに機能の説明があります。お勧めのソリューションは、データに適したフォルダを使用することです。

+0

その機能について聞いたことがなく、情報とテストがなくても大したことはありません。 MDBファイル名を新しいリリースごとに変更することで、この問題を回避することができます。私は今このプロジェクトに関与していないので、より多くのフィードバックはありません。 – tomsame

関連する問題