赞
踩
在我们使用sql server数据库或者服务器时,有时会发现数据库不到一段时间,占用磁盘空间好大,也有可能是数据的原因,也有可能是其他的原因,但如果说占用绝大部分存储空间,而且数据量又不怎么大,那么,这其中就有问题了。
sql server
首先我们要清楚问题的原因之处;
第一步:打开sql server数据库,数据库右键——属性——文件,在这个文件栏打开之后,我们会看到主数据文件和日志文件的初始大小和增长大小,如果日志文件太多,我们首先要考虑处理日志文件。
对数据库事务日志已满的处理方法:
USE [master]
GO
ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE
GO
USE 数据库名称
GO
DBCC SHRINKFILE (N'数据库名称_log' , 11, TRUNCATEONLY)
GO
- USE [数据库名称]
-
- GO
- ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
- GO
- DBCC SHRINKFILE (N'数据库名称_log' , 400, TRUNCATEONLY)
- GO
- DBCC SHRINKDATABASE(N'数据库名称' )
- GO
- ALTER DATABASE 数据库名称 SET RECOVERY full WITH NO_WAIT
- GO
数据日志处理完之后,如果是日志的问题的话,这个时候磁盘的存储空间会多出来很多,如果不是这个问题的话,我们还要去查看数据库中每个表数据大小,看看是否是数据量很大这个原因导致的。
IF OBJECT_ID('tempdb..#TablesSizes') IS NOT NULL
DROP TABLE #TablesSizes
CREATE TABLE #TablesSizes
(
TableName sysname ,
Rows BIGINT ,
reserved VARCHAR(100) ,
data VARCHAR(100) ,
index_size VARCHAR(100) ,
unused VARCHAR(100)
)
DECLARE @sql VARCHAR(MAX)
SELECT @sql = COALESCE(@sql, '') + '
INSERT INTO #TablesSizes execute sp_spaceused ''' + QUOTENAME(TABLE_SCHEMA,
'[]') + '.'
+ QUOTENAME(Table_Name, '[]') + ''''
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
PRINT ( @SQL )
EXECUTE (@SQL)
SELECT *
FROM #TablesSizes
ORDER BY Rows DESC
当这些配置好了之后,我们发现确实是数据原因,这个时候,我们就要适当的去删除数据量比较大的表格了,删除完了之后,我们就要对表格进行压缩了。将磁盘的可用空间释放出来。
数据库右键——任务——压缩——数据库,来到上面的压缩数据库文件,这个时候我们要选择压缩的百分比了,设置好百分比之后,我们就开始执行,这个过程可能比较漫长,毕竟是对磁盘的一次重新组合,所以敬请等待,最终你会看到磁盘会空出很多可用空间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。