2020-11-29 17:02:15 版本 : 数据库置疑修复方法(适用所有软件)
作者: 吴翔宇 于 2020年11月29日 发布在分类 / 其他 下,并于 2020年11月29日 编辑
 历史版本

修改日期 修改人 备注
2020-11-29 17:05:32[当前版本] 吴翔宇 其他原因...
2020-11-29 17:02:15 吴翔宇 20201129

数据库置疑修复方法(适用所有软件)

先停止数据库,复制备份LDF和MDF文件并删除数据库目录下LDF文件,然后依次执行下方七条语句


--1.设置数据库为可更新状态
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

--2.将数据库模式改为紧急
ALTER DATABASE 数据库名称 SET EMERGENCY  --注意空格分隔

--3.更改数据库单用户使用模式
alter database 数据库名称 set Single_user  --单用户(若执行失败,看下方附录1,手动改单用户)

--4.重建日志文件
dbcc checkdb('数据库名称',REPAIR_ALLOW_DATA_LOSS)

--(若执行失败,提示“数据库XXX已打开,并且一次只能有一个用户访问”执行下方附录2语句)

--5.修复数据库状态 (如果有报错就多查几遍)
DBCC CHECKDB('数据库名称')
DBCC CHECKDB ('数据库名称','repair_rebuild')
DBCC CHECKDB ('数据库名称','repair_allow_data_loss')
Go


--6.取消单用户使用模式
sp_dboption '数据库名称','single user','false'
go

--7.改变数据库可更新状态
sp_configure 'allow updates', 0
reconfigure with override
Go
————————————————————————

附录1

右键相应的数据库——属性——选项——限制访问改为SINGLE_USER,即为单用户模式



附录2

DECLARE @DBName SYSNAME;
SET @DBName = '数据库名称'; --这个是要删除的数据库库名

DECLARE @KSQL NVARCHAR(1000)
DECLARE tb CURSOR LOCAL
FOR
SELECT
KSQL = 'KILL ' + CAST([sps].[spid] AS NVARCHAR(10))
FROM [sys].[sysprocesses] AS sps
WHERE dbid = DB_ID(@DBName)--查询@DBName相关的线程

--循环杀掉要删除数据的相关线程
OPEN tb
FETCH NEXT FROM tb INTO @KSQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@KSQL);
FETCH NEXT FROM tb INTO @KSQL
END
CLOSE tb
DEALLOCATE tb


 附件

附件类型

JPGJPG

历史版本-目录  [回到顶端]
    慧邦知识分享平台 - free.V4.3.0-439 - 免费版