MS Access 2010:获取(Windows)阻止数据库的用户
Posted
技术标签:
【中文标题】MS Access 2010:获取(Windows)阻止数据库的用户【英文标题】:MS Access 2010: get (Windows) user who blocks database 【发布时间】:2015-02-24 17:52:48 【问题描述】:在 Windows 公司网络环境中,我们有几个用户通过 MS Excel VBA 程序访问 MS Access 数据库。 为了更新数据库,我们绑定到旧系统。对于输入数据,我们使用普通的访问表单和规范化的表格。 Excel VBA 不直接查询规范化表,而是使用包含非规范化记录的不同 Access 数据库。后者被删除(通过 Kill 命令)并在每个“会话”之后重新创建,以便在表单中输入新数据。 因此,如果任何用户通过 Excel 程序查询数据库,而其他程序想要删除并重新创建它,则删除失败并出现错误 70 - 拒绝访问。 (我猜在 Excel 程序中存在一些错误并且并非所有连接都已关闭,这就是为什么长时间保持程序打开的用户会长时间阻止删除 - 但我不负责那些程序 O_o )。
所以,我想在抛出错误时获取当前阻止数据库的用户的 Windows 登录名(或任何其他信息)。有没有办法做到这一点? 或者,我想在应该删除任何阻塞用户时将其踢出数据库 - 有没有办法为 kill 命令设置某种优先级??
非常感谢!
【问题讨论】:
【参考方案1】:要找出谁打开了文件,请使用 PsFile 并指定被阻止文件的路径。
就您的架构而言,如果非规范化记录是由存储在(或可以)存储在 Access 数据库中的查询生成的,则应考虑将 Excel 文件指向查询,而不是生成整个单独的文件以此目的。您可以使用“数据”功能区的“获取外部数据”部分在 Excel 工作簿中插入可刷新的表格。
【讨论】:
以上是关于MS Access 2010:获取(Windows)阻止数据库的用户的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows Server 2008 上的 MS Access VBA 中获取 Windows 用户名