单个账套登录报错:无法打开所请求的数据库,且DBCC报错“文件不可访问,或者内存或磁盘不足”

栏目:kis知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

单个账套登录报错:无法打开所请求的数据库,且DBCC报错“文件不可访问,或者内存或磁盘不足”

【问题描述】

单个账套登录报错:无法打开所请求的数据库,且DBCC报错“文件不可访问,或者内存或磁盘不足”。

【场景介绍】

  • 前台单个账套登录报错:无法打开所请求的数据库。

  • 后台运行DBCC CHECKDB('账套号'),结果为:文件不可访问,或者内存或磁盘不足,如下图所示:

图1 - dbcc运行结果

【解决方案】

在该场景下,初步判定为日志文件损坏,以下为日志文件损坏的修复流程,该过程中软件不能使用:

1、一般情况,建议把实体文件复制一份作为备份。直接进行复制会出现报错,需要关闭数据库服务再进行复制(如果不知道关什么,就把SQL相关的正在运行的服务都停止),复制完毕后需要重新开启之前被停止的服务。

图2 - 复制报错

图3 - 停止SQL相关服务

图4 - 启用SQL相关服务


2、在SQL Server里新建一个和损坏账套一模一样的账套号名字的数据库(如果此时损坏账套在数据库列表里,需要把损坏账套脱机或者删除)

图5 - 新建数据库

图6 - 设置好新账套的名称和路径


3、用备份好的数据库实体的mdf文件复制到新账套的存储路径里,替换新账套的mdf文件。

图7 - 替换新账套的mdf文件

图8 - 替换之后刷新数据库列表对应数据库的状态为"恢复挂起"


4、执行以下脚本(以下的AIS20230207171606都对应的账套号,新建的日志文件放置路径可自行设置,建议一条一条按顺序执行)

--修改账套为紧急模式
ALTER DATABASE AIS20230207171606 SET EMERGENCY
GO 
--修改账套为单用户模式
ALTER DATABASE AIS20230207171606 SET SINGLE_USER 
GO
--重建日志文件
alter database AIS20230207171606 set Emergency WITH ROLLBACK IMMEDIATE
 GO
exec sp_dboption AIS20230207171606,single,true 
GO
alter database AIS20230207171606 Rebuild Log on (name=AIS20230207171606,filename='D:\AIS20230207171606_log.ldf')  
GO
 alter database AIS20230207171606 set multi_user
GO


5、利用DBCC CHECKDB检查账套是否正常:

图9 - DBCC检查账套正常

【注意事项】

本条知识针对特定的账套数据进行分析,并不代表相同的报错一定就是这个原因引发,

相关的修复SQL也不适合直接使用,主要供读者参考,请读者根据实际情况具体分析。

单个账套登录报错:无法打开所请求的数据库,且DBCC报错“文件不可访问,或者内存或磁盘不足”

【问题描述】单个账套登录报错:无法打开所请求的数据库,且DBCC报错“文件不可访问,或者内存或磁盘不足”。【场景介绍】前台单个账套登录...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息