我的服务器上有一个数据库不断变得不可用。 要解决,我把它脱机,然后回到网上。 看事件查看器,快速连续出现三个错误:
FCB ::打开失败:无法打开文件C:… \ MyDatabase.mdf文件编号为1.操作系统错误:32(进程无法访问该文件,因为它正在由另一个进程使用)。
FCB ::打开失败:无法打开文件C:… \ MyDatabase_1.ldf文件编号为2.操作系统错误:32(该进程无法访问该文件,因为它被其他进程使用)。
发生文件激活错误。 物理文件名称“C:… \ MyDatabase_1.ldf”可能不正确。 诊断并更正其他错误,然后重试该操作。
查看数据库属性,日志文件path看起来是正确的。 我不是一个真正的DBA,而是出于必要。 我还应该在这里寻找什么?
(SQL Server 2008 Express SP1)
正如Randolph所说,你可能有一个防病毒程序来保存有问题的文件。 要确认这一点,请从Microsoft的Sysinternals获得Process Explorer或handle.exe(或两者兼得!)。 学习和爱他们所有的工具。
如果它不是AV,但其他东西,那些文件locking,然后修复它是什么。
此外,另外,您不希望数据或日志文件在您的系统卷上(通常是C:\驱动器)。 如果他们填满了磁盘,那么你的服务器已经closures了。 你可能希望他们在不同的音量。 警惕 – 使用SQL Express,您的最大数据库大小可能会低于磁盘上的可用空间量,但是您是否想要始终保持正确?
我一直在试图解决这个错误的年龄呢! www上的各种论坛并没有提供一个永久性的修复方法,但是在我看来,正确的解决办法是使用一个进程pipe理器(如EMCO UnlockIt)来certificate发生错误时,日志文件或者mdf文件试图打开肯定是在这一点被封锁的SQL Serverexpression(即使你已经closures了SQL SERVER快递应用程序)。 因此,closuresSQL Server后,login到您的网站时仍会出现错误。
我认为这个错误是完全准确的。 没有足够的进程允许访问日志文件或数据库,或两者。 如果您的桌面上有网站,并且正在访问数据库,也许其他一些用户也在尝试这样做(如果您拥有多个托pipe网站,甚至可能连接到其他数据库)。 那么你需要至less2个并发进程,这是SQL Server保留之前,所以你需要3个进程,并作为其他用户连接更多,仍然更多。 我可能是错的,我不是这方面的专家。 然而:-
如果打开SQLSERVER EXPRESS并右键单击根节点,则可以在“高级”选项卡中增加被阻止进程的阈值,也可以增加最大并发连接数。 在我看来,这是解决scheme,无论如何,我已经增加了从0到12的阻塞进程的门槛,其工作正常。 也许它晚上很晚,所以没有多less用户正在尝试连接,但无论如何,这似乎是一个明智的解决scheme给我!
祝你好运。 弗兰基,利兹西约克郡,英国