【问题标题】:System.Data.SQLite slow connect for non-admin users非管理员用户的 System.Data.SQLite 慢速连接
【发布时间】:2012-10-16 06:47:42
【问题描述】:

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

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

当我执行以下操作时,问题不会发生:

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

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

【问题讨论】:

    标签: .net performance sqlite non-admin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      只需将";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)
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多