Asp.net 为什么Jet OLEDB驱动程序缓存我的MDB文件?

Asp.net 为什么Jet OLEDB驱动程序缓存我的MDB文件?,asp.net,ms-access,Asp.net,Ms Access,我有一个使用Access文件的Cassini应用程序。更新的安装程序将覆盖应用程序和数据库。然而,即使在系统重新启动后,应用程序仍然可以看到旧数据。(还手动复制了MDB文件,以确保其已被替换,但没有帮助。) 应用程序查看新MDB数据的唯一方法是将其安装到新文件夹中 连接字符串是标准的(我认为): 知道发生了什么以及如何避免缓存问题吗 更新(回答评论中的一些问题): 我们只能在Windows 7上复制此问题 卡西尼应用程序从不更新MDB。我们创建数据库并发送给用户我们确实确保该文件已被安装程序成

我有一个使用Access文件的Cassini应用程序。更新的安装程序将覆盖应用程序和数据库。然而,即使在系统重新启动后,应用程序仍然可以看到旧数据。(还手动复制了MDB文件,以确保其已被替换,但没有帮助。)

应用程序查看新MDB数据的唯一方法是将其安装到新文件夹中

连接字符串是标准的(我认为):

知道发生了什么以及如何避免缓存问题吗

更新(回答评论中的一些问题):

  • 我们只能在Windows 7上复制此问题
  • 卡西尼应用程序从不更新MDB。我们创建数据库并发送给用户我们确实确保该文件已被安装程序成功替换。实际上,如果我们手动替换它,同样的事情也会发生
  • Windows重新启动后问题仍然存在
设置 将连接对象的授权属性缓存为false,默认情况下为true

您是否尝试过使用“Microsoft.ACE.OLEDB.12.0”提供程序?我相信它是预装Windows7的

  • 转到解决方案资源管理器
  • 选择mdb文件
  • 转到属性,有一个属性
  • 不复制将其设置为复制(如果更新)

  • 新的Windows 7/Server 2008安全模型在某些条件下为每个用户提供文件的虚拟副本

    安装完成后,您是否有可能使用此设计功能向用户呈现过时的快照?应用程序是否可能对安装数据库的用户使用不同的凭据


    在中有对功能的描述。建议的解决方案是为数据使用更合适的文件夹

    您使用的是什么操作系统?是Vista还是Win7?数据保持陈旧的时间有多长?我以前在VB6应用程序中遇到过Jet缓存问题,但这与刷新速度不够快有关。@m0sa因此,您有一个正在运行的web应用程序,您想运行安装程序来更新它。在替换.mdb文件之前,安装程序究竟执行哪些操作?是否停止web应用程序?是否停止IIS服务?那么,“系统重启”是什么意思?(我们通常的意思是“重新启动windows”。)另外,请回答Mwolffe02的问题,这很重要。我注意到的情况是,有两个IIS站点从不同的应用程序池访问相同的mdb文件。一旦1个站点更新了mdb文件中的sumething,第二个进程将无法立即看到更新。我只是更新了问题以回答问题。不确定授权缓存会如何影响这一点,因为我们在应用程序中看到暂停的数据。此属性无论如何都是只读的。从未听说过该功能,如果没有更多信息和测试,很难说。我们已经解决了这个问题,在每个新版本中更改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";