今天有个客户的用友U8数据库出现问题,可能是他电脑的问题,偿试了多种办法没有成功,但是最终成功帮助客户将数据恢复了,现在记录一下过程。
1、将SQL SERVER 服务进程关闭重启;
2、打开管理器,打开查询窗口,在【可疑】数据库上点右键点【分离】看一下有没有活动联接;
3、输入以下命令:
SP_CONFIGURE 'ALLOW UPDATES', 1 RECONFIGURE WITH OVERRIDE
GO
ALTER DATABASE [UFDATA_016_2019] SET EMERGENCY
GO
SP_DBOPTION 'UFDATA_016_2019', 'single user', 'true'
GO
DBCC CHECKDB('UFDATA_016_2019','REPAIR_ALLOW_DATA_LOSS')
GO
DBCC CHECKDB('UFDATA_016_2019', 'REPAIR_REBUILD')
GO
SP_CONFIGURE 'ALLOW UPDATES', 0 RECONFIGURE WITH OVERRIDE
GO
SP_DBOPTION 'UFDATA_016_2019', 'single user', 'false'
GO
第一次,修复时在ALTER DATABASE SET SINGLEUSER TRUE中耗费2个小时也没有成功,可能是因为有活动链接的原因。
以上数据库语句部分不适合SQL SERVER 2000数据库,今天修复了一个2000数据库补充如下 :
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES', 1
GO
RECONFIGURE WITH OVERRIDE
GO
SELECT * FROM sysdatabases WHERE name LIKE 'UFDATA_019_%'
--将数据库状态设置为只读/紧急状态
UPDATE sysdatabases SET status=-32768 WHERE name = 'UFDATA_019_2021'
--重建日志文件
DBCC REBUILD_LOG('UFDATA_019_2021', 'D:\UFSMART\Admin\ZT019\2021\UFDATA23.LDF')
DBCC CHECKDB('UFDATA_019_2021')
SP_DBOPTION 'UFDATA_019_2021', 'dbo use only', 'false'
ALTER DATABASE UFDATA_019_2021 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
DBCC CHECKDB('UFDATA_019_2021','REPAIR_ALLOW_DATA_LOSS')
GO
DBCC CHECKDB('UFDATA_019_2021', 'REPAIR_REBUILD')
GO
--将数据库恢复为正常状态
UPDATE sysdatabases SET status=28 WHERE name = 'UFDATA_019_2021'
ALTER DATABASE UFDATA_019_2021 SET MULTI_USER
GO
SP_CONFIGURE 'ALLOW UPDATES', 0
GO
RECONFIGURE WITH OVERRIDE
GO