先简单带一下.ldf和.mdf区别
.mdf:数据库数据文件,存放一个数据库的数据信息。
.ldf:数据库日志文件,存放对该数据库的更新操作(增、删、改)的文件。
所在在还原数据库时很慢,还原成功后发现.ldf文件很大,然后就开始一系列骚操作!
首先开始查日志文件大小情况
dbcc sqlperf(logspace)
因为当时是直接用的之前的数据库文件还原到新的数据库上,所以按照网上的方法,一直提示:
在 sys.database_files 中找不到数据库“JY_Cfcp”的文件“JY_Cfcp_log”。该文件不存在或者已被删除。
具体原因是因为 数据库名与逻辑文件名不一致。
所以在这我再带一句,如何修改文件名,如下:
alter database '数据库名'modify file(name='原逻辑文件名', newname='新逻辑文件名')
因为同步存在的还有日志文件,所以也需要做修改
alter database ‘数据库名‘modify file(name='原逻辑文件名_log', newname='新逻辑文件名_log')
通过上面两步下面可以进入主题,代码如下:
(上面两步的坑是自己作的,一般情况不会出现):
USE[master] GO ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式 GO USE JY_Cfcp 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
最后改完可以通过以下代码进行查验
SELECT * FROM SYS.database_files WHERE type_desc='LOG' --查询当前数据库select * from sys.master_files WHERE type_desc='LOG' --查询全部