File Geodatabase中的lock文件

        与Personal GDB的单个.mdb文件表现形式不同,File GDB是以文件夹的形式存放在磁盘中的,进入File GDB的文件夹可以看到许多凭我们肉眼凡胎无法辨认的文件(你要是能认出来叫你犀利哥~),这向你传递一个信息,没事别到里面瞎逛。
        当一个ArcGIS程序,比如ArcMap、ArcCatalog或者ArcGIS Server(将其中的数据发布成了服务),正在访问File GDB时,ArcGIS会给其中相应的数据加上(悲观)锁,表现出来就是在该File GDB的文件夹里多了若干.lock结尾的文件。当数据被锁定时,你是无法对其进行修改或删除的。比如ArcMap里加载了一个FeatureClass,这时你无法用ArcCatalog删除它;在ArcCatalog中预览一个FeatureClass,这时你无法用ArcMap编辑它。
        除了正在使用的数据会肯定被锁以外,以下情况中还有其他数据也会被锁住:1、正在访问包含在DataSet中的某个FeatureClass时,这个DataSet内的其他FeatureClass也会被锁;2、单独的FeatureClass之间如果做了Relate,那么访问其中一个时其他的也会被锁。
        9.3+sp1以后,每个.lock文件的文件名会至少带有以下两个信息:产生该锁的进程的ID号(任务管理器,查看,选择列,勾选PID可查看),以及该进程所在的机器名。当数据被锁定时,除了以上标志明显的.lock文件外,还会有一些系统锁文件。所以根据这些.lock文件的命名,你就能判断出是哪个进程占用了数据,从而做出正确的处理。
        一般来说,.lock文件会在生成它的进程正常退出时被自动删除掉。但如果进程没有正常退出,比如崩溃后,由该进程生成的.lock文件则会继续存在,但已经没有任何作用。清除这些因意外状况遗留下的.lock文件的方法:1、重新开启该进程,则会清理上一次遗留的.lock文件;2、用Compact Database工具或ArcCatalog中的右键菜单;3、手动删除。推荐方法2,方法3慎用。除非你有备份,否则误删File GDB文件夹下一个哪怕0k的文件,都有极大的可能造成整个数据库损坏而无法修补。
        如果非要用方法3,建议在命令行下用del *.lock命令删除;如果非要用资源管理器删,建议左手在按住ctrl或shift时,右手食指不要发抖。

Leave a Comment

Your email address will not be published. Required fields are marked *