使用作业定时压缩数据库
- 作者: 亖呉?盀
- 来源: 51数据库
- 2021-08-03
使用作业定时压缩
有一个项目上的数据库使用了几个月.mdf文件与.ldf文件加起来竟然达到了100g+,这样下去硬盘会被撑爆的。
这样的原因是因为异常情况造成某个数据表中有大量的冗余数据,将异常数据表的冗余数据清理之后,mdf文件并没有变小,因为对数据库进行了删除操作,ldf文件反而变增大很多!根据项目情况考虑使用作业方式定时压缩数据文件大小,压缩之后只有十几兆的大小。
setp1:开启sql server agent服务
使用作业需要sql agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行。
以下步骤开启服务:开始——>运行——>输入"services.msc"——>进入服务,开启sql server agent服务,并设置为自动。
如图:

setp2:创建作业
创建作业的过程这里就不说了,作业执行的命令为:
declare @error int
set @error=(select top 1 size/128.0 - cast(fileproperty([name], 'spaceused') as int)/128.0 as availablespaceinmb from sys.database_files order by [name] desc)
--print @error
if(@error>1)
begin
alter database hcjk_customer --数据库名字
set recovery simple; --设置简单恢复模式
dbcc shrinkfile (hcjk_customer, 1); --(m)不能小于1m,参数“hcjk_customer”应为 select [name] from sys.database_files
dbcc shrinkfile (hcjk_customer_log, 1); --(m)不能小于1m,参数“hcjk_customer_log”应为 select [name] from sys.database_files
alter database hcjk_customer
set recovery full; --恢复为原来完整模式
end
--else
--begin
-- print @error
--end
压缩操作前的.mdf文件与.ldf文件大小:

压缩操作后的.mdf文件与.ldf文件大小:

推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7
