转自
http://blog.youkuaiyun.com/liuhuayang/article/details/5771208
数据库服务器磁盘空间是一天比一天少,已经加了一块500G的硬盘了,可RAID5下也没有起到什么太大的作用。 看看能不能从数据库中要回点空间。
先看看未分配的数据库空间有多少
1 使用 sp_spaceused 命令查看当前unallocated space 的空间, 还真的不少

那既然有不少的未分配空间,开始收缩数据库好了。
1 在保证数据库正常备份的情况下,DUMP日志
2005 数据库中可以使用
use [目标数据库]
go
backup log [目标数据库] with no_log
go
dbcc shrinkdatabase ('目标数据库', 20, truncateonly)
20的意思是数据库收缩后的数据库文件中所需的剩余可用空间百分比。
结果出来了,
EstimatedPages
数据库引擎估计文件能够收缩到的 8 KB 页数。
| EstimatedPages | 数据库引擎估计文件能够收缩到的 8 KB 页数 |
| EstimatedPages | 数据库引擎估计文件能够收缩到的 8 KB 页数 |

任务完成。
分析: 在2005上可以使用的命令已经在sql server 2008上不能使用了
sql server 2008 不在支持 backup log with no_log ,
需要替换为
USE [master]
GO
ALTER DATABASE [目标数据库] SET RECOVERY SIMPLE WITH NO_WAIT
GO
DBCC shrinkdatabase ('目标数据库', truncateonly)
USE [master]
GO
ALTER DATABASE [目标数据库] SET RECOVERY FULL WITH NO_WAIT
GO
本文探讨了在数据库服务器磁盘空间不足时,通过收缩数据库和回收未分配空间的方法来优化资源利用。详细介绍了在SQL Server 2005及后续版本中执行数据库收缩操作的步骤,包括备份日志、设置数据库恢复模式以及执行收缩命令等关键步骤。同时,分析了不同版本SQL Server在执行收缩操作时的兼容性问题,并提供了相应的解决方案。
764

被折叠的 条评论
为什么被折叠?



