原创日志

Access数据库所在目录写权限问题相关

[ 2006-12-27 21:26:53 | 作者: admin ]
字号: | |
几天在一个客户那里遇到一个问题:
不能使用 '';文件已在使用中。

错误类型:
Microsoft JET Database Engine (0x80004005)
不能使用 '';文件已在使用中。
错误的产生是在建立数据库连接的时候。
但错误的产生却又是随机的,有时候没有错误,有时候刷新就错误了。
后来在网上检索才找到个答案,一下豁然。
access打开的时候会产生 .ldb 文件,当 iusr_* 用户无写权限时,则无法自动生成该文件了。
所以所有含access目录其实都应该加上写权限,而不要只把mdb设为可写。

下面是关于access锁的说明
来字:http://www.aspnets.com/data/Access/26458.html
一访问网站,系统数据库就被锁定,有什么办法解决吗?
读完数据后及时释放连接
这是系统创建的,详细信息参考:http://support.microsoft.com/default.aspx?kbid=208778
多用户方案的 MicrosoftJet 数据库引擎版本 4.0 中 .ldb 文件起着重要作用。 .ldb 文件用于确定共享数据库中以及由谁锁定的记录。自动 .ldb 文件创建和删除为存储计算机和安全名称并扩展字节范围锁放置为用于共享, 打开每个数据库创建一个 .ldb 文件。 .ldb 文件始终与打开数据库 (.mdb) 同名, 位于同一文件夹作为打开数据库。 在同一文件夹中例如, 如果 (对于共享使用) 在 C:\ProgramFiles\Microsoft Files\Microsoft Office\Office\Samples 文件夹, 打开 Northwind.mdb 示例数据库然后是自动创建名为 Northwind.ldb 文件。 只要最后用户关闭共享数据库, .ldb 文件被删除。 唯一例外是当用户没有删除权限或数据库被标记为损坏 ; 时然后, .ldb 文件不删除因为它包含有关谁已使用数据库同时信息数据库已标记为损坏。

如果您打算共享数据库, .mdb 文件应位于文件夹其中用户具有读、 写、 创建, 和删除权限。 Even if you want users to have different file privileges (for example, some read-only and some read-write), all users sharing a database must have read, write, and create permissions to the folder. 同时仍然允许对文件夹完全权限您可以, 但是, 分配到 .mdb 文件为单个用户只读权限。 注意 : 记录锁定不使用如果用户打开数据库以独占访问 (通过单击 打开 对话框中 独占 复选框), ; 因此, MicrosoftAccess 不尝试打开或创建的 .ldb 文件。 如果数据库供独占使用, 始终打开用户需要只读取和写入该文件夹权限。
.ldb 文件内容为每个人谁打开共享数据库, Jet 数据库引擎将条目数据库 .ldb 文件中。 大小的各个 .ldb 项是 64 字节。 前 32 字节包含计算机名称 (例如, JohnDoe)。 二 32 字节包含安全名称 (如管理员)。 的并发用户, Jet 数据库引擎支持最大数目是 255 ; 因此, .ldb 文件大小是从不大于 16 KB。 当用户关闭共享数据库, 用户输入不删除从 .ldb 文件。 当其他用户打开数据库但是, 它可能被覆盖。 这意味着您无法使用 .ldb 文件单独确定谁正在使用数据库。

.ldb 文件用法Jet 数据库引擎使用为防止用户在将数据写入, 其他用户已经锁定页并确定谁有其他页锁定 .ldb 文件信息。 如果 Jet 数据库引擎检测与其他用户, 锁定冲突它读取 .ldb 文件以获取计算机和安全性有文件或记录用户的名称锁定。 在大多数锁冲突情况, 接收使您得以保存记录, 将它复制到剪贴板, 一般 写入冲突 消息或除去所做更改。 在某些情况下, 但是, 您收到以下错误消息: 无法锁定表 < 表名 > ; 当前中使用由用户安全 < 名称 > <computer name > 上。 注意 : .ldb 文件中的信息的状态已没有轴承的数据库状态上。 如果 .ldb 文件损坏, 一切数据库中应仍正常工作。 但是, 可能会看到混乱文本而不是任何锁冲突邮件中的用户名称。

一访问网站,系统数据库就被锁定,有什么办法解决吗?
如果多人访问,连接MDB时不要使用独占方式。
adModeUnknown:缺省。当前的许可权未设置
adModeRead:只读
adModeWrite:只写
adModeReadWrite:可以读写
adModeShareDenyRead:阻止其它Connection对象以读权限打开连接
adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接
adModeShareExclusive:阻止其它Connection对象以读写权限打开连接
adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接

连接串例子:
1 只读
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\temp\123.mdb;Mode=Read;Persist Security Info=False

2 独占方式
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\temp\123.mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False

下面是一个好同志的介绍
http://babocs.yculblog.com/post.4076477609.html
1..ldb可以用记事本打开查看,记录的是所有登陆人的电脑名和用户名
2.当打开MDB时,“无法删除ldb:共享冲突,源文件或目标文件可能正在使用”
3.偶尔会出现ldb未能删除的现象,非常正常。没有人直接打开该文件,是数据读取的时候产生的,应该没有任何问题。删除即可。
[最后修改由 admin, 于 2006-12-27 21:52:58]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=777

这篇日志没有评论。

此日志不可发表评论。