SQL SERVER 2014 清理数据库日志文件踩的坑!

先简单带一下.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'  --查询全部
发布了20 篇原创文章 · 获赞 34 · 访问量 9961

猜你喜欢

转载自blog.csdn.net/qq_37559253/article/details/103292792
今日推荐