1

"Permission denied"ファイルに接続すると例外が発生します.sdf

この接続文字列を使用しています。

connection string="Data Source=|DataDirectory|\DB.sdf;Password='something';Mode = Read Only;Temp Path= Environment.GetFolderPath(Environment.SpecialFolder.Templates);Persist Security Info=True"" providerName="System.Data.EntityClient" />

これは Win 7 では正常に動作しますが、Win XP でアプリを実行すると戻ります

アクセス拒否

例外

一時ファイルに別のアドレスを試しましたが、それでも失敗しました。このオプションはすべて真です

  1. データベース ファイルへのパスは、xp マシン上に存在します。
  2. 指定されたディレクトリに一時ファイルを作成する権限があります
  3. 正しいパスワードを提供しています。

この問題は、データベース接続文字列が読み取り専用に設定されている場合に発生します。解決策を見つけましたが、使用できません:

解決策 1:

これがこれに関するスクープです。SDF ファイルを XP から Vista に移動すると、NLS バージョンが変更されたため、ファイルを読み取り/書き込みモードで開いて、インデックスが存在する場合はそれを書き換えようとします。これは、XP から Vista への移行時に最初に開いたときにのみ発生します。したがって、簡単な回避策は、ファイルを一時的に読み取り/書き込みモードに変更して、Vista で開き、読み取り専用に戻すことです。

アプリケーションが DVD から実行されるため、このソリューションを使用できません。

解決策 2:

XP/Server 2003 用、Vista/Server 2008/Win7 用、Win 8 用の 3 つの sdf ファイルがあります。

アプリケーション DVD にこれを行うための空き容量がないため、これもひどいものです。

誰でもこの問題を解決する良い考えを持っています。

4

2 に答える 2

0

ファイルを書き込み可能な場所にコピーし、ファイルから読み取り専用プロパティを削除します。このファイルに接続します。

Environment.SpecialFolderSpecialFolder.LocalApplicationData適切な場所を取得するために呼び出すことができます。

Path.GetTempPathこの点でも役立つかもしれません。

于 2013-01-10T08:40:15.720 に答える
0

DVDにはデータベースファイルのコピーが2つ必要です。1つはXP/Server 2003用で、もう1つはVista以降用です。または、アプリを最初に起動したときに、データベースを書き込み可能な場所にコピーします。同じ問題がSQLServerCompact4.0にも当てはまります

于 2013-01-10T08:41:39.640 に答える