SQLServer数据库磁盘空间清理
小职 2018-07-02 来源 : 阅读 3858 评论 0

摘要:本文主要向大家介绍了SQLServer数据库磁盘空间清理,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。

本文主要向大家介绍了SQLServer数据库磁盘空间清理,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。

SQL Server在删除数据后,会重新利用这部分空间,所以如果不是空间紧张的情况下,可以不回收。

回收一般先回收日志文件,因为这个回收速度非常快,可以短时间内清理出一部分可用空间。

回收步骤:
1、查看日志文件大小【一般回收比较大的】 

--适用于RDS For SQL Server2012

SELECT DB_NAME(database_id) AS [Database Name],[Name] AS [Logical Name],[Physical_Name] AS [Physical Name],((size * 8) / 1024) AS [Size(MB)]FROM sys.master_files ORDER BY [Size(MB)] DESC

 

--适用于RDS For SQL Server2008R2,需要对数据库逐个执行

USE 数据库名

GO

SELECT a.name as 逻辑文件名, size/128 [totalspace文件大小(兆)],

 

FILEPROPERTY(a.name, 'SpaceUsed')/128 [usedspace已用空间(兆)],

size/128 - FILEPROPERTY(a.name, 'SpaceUsed')/128 [未用空间(兆)],

 

FILEPROPERTY(a.name, 'SpaceUsed')*100.0/size [使用率(%)]

FROM sys.database_files a cross join (select recovery_model_desc, log_reuse_wait,log_reuse_wait_desc,is_auto_shrink_on from sys.databases where name=DB_NAME())b

WHERE type=1

 

 2、查看日志文件空间是否可回收【只有log_reuse_wait_desc是NOTHING状态才可回收】

SELECT [name] ,[log_reuse_wait_desc] FROM master.sys.databasesWHERE [name]='数据库名【第1步获取】'

 3、回收日志文件空间

DBCC SHRINKFILE(logicalName【第1步获取】)

 4、查看数据文件大小

USE 数据库名GOSELECT a.name as 逻辑文件名, size/128 [totalspace文件大小(兆)],

    FILEPROPERTY(a.name, 'SpaceUsed')/128 [usedspace已用空间(兆)],

    size/128 - FILEPROPERTY(a.name, 'SpaceUsed')/128 [未用空间(兆)],

    FILEPROPERTY(a.name, 'SpaceUsed')*100.0/size [使用率(%)]FROM sys.database_files a cross join (select recovery_model_desc, log_reuse_wait,log_reuse_wait_desc,is_auto_shrink_on  from sys.databases where name=DB_NAME())bWHERE type=0

 5、收缩数据文件【按照经验,最好每5G循环收缩,如果影响业务,随时中断,不会回滚】

declare @usedspace int ,@totalspace int

select @usedspace= xxx,@totalspace =yyy

while @totalspace> @usedspace

begin

set @totalspace= @totalspace-5 *1024

DBCC SHRINKFILE( 逻辑文件名,@totalspace )

end

 注:逻辑文件名,usedspace,totalspace从第4步的结果集获取

6、查看收缩进度【预估值】

SELECT DB_NAME(database_id) as dbname,

session_id, request_id, start_time

, percent_complete

 FROM sys.dm_exec_requests where percent_complete<>0

本文由职坐标整理并发布,了解更多内容,请关注职坐标SQL Server数据库频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程