System.Data.SQLite慢速连接非管理员用户

时间:2012-10-16 06:47:42

标签: .net performance sqlite non-admin

我有一个带有System.Data.Sqlite(1.0.82)的.NET 4应用程序(在混合模式下),用于访问加密数据库。

当我将应用程序安装到“c:\ program files \ myfolder”时,连接到sqlite数据库文件的速度很慢。日志文件显示它是sqlite connect语句,延迟了几秒钟。

执行以下操作时不会出现此问题:

     
  • 使用管理员权限运行应用程序
  •  
  • 安装除c:\ program files \
  • 之外的任何其他位置  
  • 将应用程序安装到c:\ program files \,但将数据库移动到另一个文件夹。

我不知道这可能是什么原因......

2 个答案:

答案 0 :(得分:5)

如果DB文件位于应用程序目录中,则UAC很可能将其移至“... appdata \ Local \ VirtualStore \ Program Files”目录。最佳做法是创建自己的appdata \ MyApp文件夹,并将原始数据库从c:\ program files \ MyApp文件夹中复制。

答案 1 :(得分:1)

以只读模式打开数据库很有帮助。 (无论如何,你应该只保留程序文件文件夹中的只读内容。)

只需将";Read Only=True"附加到连接字符串。

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