1.还原一个没有日志的数据库
RESTORE DATABASE db_temp
FROM DISK='备份文件路径\db.bak'
WITH MOVE 'dbname' TO '数据文件路径\db_temp.mdf',NO_LOG
完成后刷新数据库列表会出现出现一个“db_temp(还原中)”的数据库。
2.新建新建一个正常的数据dbnew。新建完后停掉sqlserver服务
3.将第1步生成的mdf 文件 盖掉 第二步产生的 mdf 文件。启动sqlserver服务
4.重新创建日志
ALTER DATABASE dbnew SET EMERGENCY
GO
ALTER DATABASE dbnew SET SINGLE_USER
GO
DBCC CHECKDB(dbnew ,'REPAIR_ALLOW_DATA_LOSS')
GO
ALTER DATABASE dbnew SET MULTI_USER
GO
ALTER DATABASE dbnew SET ONLINE
GO
上面操作后回去刷新数据库列表dbnew就可以正常使用了
收缩日志sql语句
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式
GO