2012-10-16 5 views
6

Ich habe eine .NET 4-Anwendung (im gemischten Modus) mit System.Data.Sqlite (1.0.82) für den Datenbankzugriff auf eine verschlüsselte Datenbank.System.Data.SQLite langsame Verbindung für Nicht-Admin-Benutzer

Wenn ich die Anwendung auf "c: \ Programme \ MeinFolder" installiere, ist die Verbindung zur SQLite-Datenbank langsam. Protokolldateien zeigen, dass es sich bei der sqlite connect-Anweisung um einige Sekunden verzögert.

Das Problem tritt nicht auf, wenn ich folgendes tun:

  • Führen Sie die Anwendung mit Administratorrechten
  • an jedem anderen Ort als c Installieren: \ Programme \
  • die Anwendung c Installieren: \ program files \, verschieben Sie die Datenbank jedoch in einen anderen Ordner.

ich keine Ahnung, was die Ursache dafür sein kann ...

Antwort

5

Wenn die DB-Datei im Anwendungsverzeichnis ist, dann ist es sehr wahrscheinlich, dass die UAC es auf die“bewegt ... appdata Verzeichnis \ Local \ VirtualStore \ Programme ". Es empfiehlt sich, einen eigenen Ordner appdata \ MyApp zu erstellen und die ursprüngliche DB aus dem Ordner c: \ program files \ MyApp zu kopieren.

+0

es funktioniert, danke – matihuf

1

Es hilft, die Datenbank im schreibgeschützten Modus zu öffnen. (Sie sollten sowieso nur schreibgeschützte Dateien im Ordner für Programmdateien aufbewahren.)

Fügen Sie einfach ";Read Only=True" an die Verbindungszeichenfolge an.

private const string CONN_TEMPL = "Data Source={0};Version=3;Read Only=True"; 
var conn = new SQLiteConnection(
    String.Format(CultureInfo.InvariantCulture, CONN_TEMPL, databasePath) 
); 
Verwandte Themen