我正在使用 Process Explorer 来确定哪个进程在 Windows 中锁定了特定的 Fox Pro 数据库文件。
它告诉我系统已锁定。当我去终止“系统”进程时(如果您问我,这听起来不是一个好主意),它会询问我是否确定要终止系统进程。我还没有回答yes
。
这是公司的服务器,我想也许我唯一的选择就是告诉每个人都关闭它并重新启动。
我还有其他选择吗?
答案1
您还有许多其他选择,但就像试图终止进程一样System
,它们中的大多数也是坏主意。(顺便说一句,踢出每个用户也不太可能有帮助。)
首先,它是一个数据库文件。因此,它上面有一个文件锁,因为数据库引擎之类的程序正在读取或写入该文件。顺便说一句,只要数据库在线或可用,这种情况就会一直发生。数据库文件被锁定。应该如此;必须如此。除非您真的知道自己在做什么,否则您真的不应该对数据库文件进行文件级操作,请原谅我的观察,这似乎不是适合您的描述。
如果您必须对数据库执行文件级操作,正确的解决方案是使用数据库管理控制台和/或 SQL/ODBC 查询使数据库脱机和/或“分离”它。只有在启用了群集、镜像或其他 HA 功能的情况下,您才能在数据库联机时执行此操作。(如果您不得不问,那就不要问。或者应该祈祷您不要问。)一旦数据库不再使用,您就可以随心所欲地摆弄文件,但同样,除非您真的知道自己在做什么,否则您不应该这样做。
如果这不可能(这种情况时有发生),那么下一个最好的办法就是终止将作为服务运行的数据库引擎。应该可以通过命令行或net stop
GUI MMC 管理单元执行services.msc
此操作,或者作为最后的手段,通过任务管理器结束进程。这应该会释放锁定并允许您对正在考虑执行的文件执行任何操作,但这可能也不是一个好主意。如果无法停止服务并且无法终止进程,您将看到系统重新启动,因为服务挂起等待内核资源,并且不会释放文件锁定。
现在,在您匆忙结束该过程之前,也许您需要思考另一个问题,即如何实现您最终想要实现的目标。这似乎是更明智的方法,至少对我来说是这样。