一切福田,不離方寸,從心而覓,感無不通。

.net网站出现:不能使用 ;文件已在使用中

 

今天分析iislog

发现一堆 “不能使用 ;文件已在使用中”   fuck…. 还不少呢!Google了一下,。找到了问题所在

整站,是asp+acc 的。。。所以只给了acc的数据库权限。。数据库目录是只读的、。

解决办法

数据库目录,给webuser加上写权限。。。立刻生成了个.ldb 。。。

顺便解释下,什么是ldb

ldb 文件是由共享数据库的使用者自动创建以及删除得。.LDB 文件建立并存储计算机名、用户名以及放置扩展域锁的。

.LDB 文件一般与 .MDB 同名,并且与 .MDB 文件在相同目录,在 .MDB 文件被打开时建立并锁定。

举个例子,如果你打开 c:\northwind.mdb 文件后 c:\northwind.ldb 文件会自动被建立并被锁定。

当最后一个用户关闭共享数据库时 .ldb 文件会被自动删除。但是当用户没有正常关闭数据库或者数据库已经被标记为损坏,那么 .LDB 文件不会被自动删除,

因为 .LDB 文件中存储着数据库损坏时谁正在使用该数据库。

权限问题:

记得要给予 .LDB 文件所在的文件夹一定的权限。–我就没给。。虽然可以用,但是影响了性能。。

如果你准备共享一个数据库,该 .MDB 文件应该被放置在一个用户拥有读取、写入、建立、删除权限的目录中(NTSF格式)。

即使你要求每个用户有不同的文件权限(比如,只读或者可读写),所有能够共享该数据的用户对该目录都应该拥有读取、写入、建立的权限,但是你可以分配用户对某个 .MDB 文件只拥有只读权限。

注意:如果用独占方式打开某个数据库,那么 MS JET DB 将不会建立 .LDB 文件,此时用户对目录的权限只要求有读取和写入两个权限即可。

.ldb 文件的内容:

MS JET DB ENGINE 会为每个以共享方式打开数据库的使用者在 .LDB 文件中创建一个条目,每个条目的大小是 64 字节。

前面 32 字节保存计算机名,后面 32 字节保存用户名。JET DB ENGINE 支持的最大用户数是 255,因此 .LDB 文件的大小不会超过 16 KB。

当一个用户关闭一个共享数据库时,该用户在 .LDB 文件中的条目不会立即被删除,可是该条目会在下一个用户打开这个数据库时被覆盖。

这也就意味着你不能通过 .LDB 文件来唯一确定谁是某个数据库的当前使用者。

.LDB 文件的使用方法:

JET DB ENGINE 使用 .LDB 文件中的信息来确定谁锁定了数据,谁正在写入被其他人锁定的数据。

如果 JET DB ENGINE 发现有其他用户的锁定冲突,

它会读取 .LDB 文件以获取计算机名与用户名谁锁定了文件或者记录。

在多数锁定冲突情况下,你会在存储记录时得到一个 “写入冲突”的提示并且取消你所做的修改。

在有些情况下你会得到如下提示:

Couldn”t lock table <table name>; currently in use by user <security name> on computer <computer name>.

注意:上述关于 .LDB 文件的信息与数据库文件无关。如果一个 .LDB 文件损坏,数据库文件仍然能够工作正常。

但是写入冲突的提示消息中<security name>这个部分你可能会看见一串不知所云的文字。

参考:

在 Access 2000 中,你可以用 VBA 来输出某个数据库的所有登陆用户的信息。

关于此代码请参考:

198755 ACC2000: Checking Who Logged into Database with Jet UserRoster

转自:http://rogermmg.blog.163.com/blog/static/117472889201112343341825/